primer

C++ 中 auto 与 decltype 的用法与区别

不羁的心 提交于 2020-12-19 06:14:04
最近在恶补 C++ 知识的时候,学习到了一些 C++11 标准的新特性,利用这些新特性,我们能够更快地提高编程效率,从而实现我们的目标,在此特意记下学习过程中所学习到的一些东西,方便日后的回顾和复习。 auto 关键字 在我们日常编程的时候,我们常常需要把表达式的值赋给变量,需要在声明变量的时候,我们必须清楚的知道变量是属于什么类型的。然而往往有些时候,我们做到这一点并非易事。为了解决这个问题, C++11 新标准就引入了 auto 类型说明符,通过使用 auto 关键字,我们就能让编译器替我们去分析表达式所属的类型,和原来那些只对应某种特定的类型说明符(例如 int )不同, auto 能让编译器通过初始值来进行类型推演,从而获得定义变量的类型,这样一来,我们就可以大大地降低我们在编程中出现变量类型错误的概率了。 需要注意的一点⚠️:auto 定义的变量必须有初始值。 举个例子: #include <iostream> #include <typeinfo> using namespace std; int main(int argc, const char *argv[]) { auto value1 = 1; auto value2 = 2.33; auto value3 = 'a'; std::cout << "value1 的类型是 " << typeid(value1)

你有一份新的C++书单,请注意查收!

跟風遠走 提交于 2020-12-18 02:57:06
​ C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计,因而C++就适应的问题规模而论,大小由之。 作为一个Java工程师,学习C++的门槛并不算低,C++从来没有虚拟机,没有垃圾回收,在Java里不需要考虑的各种技术细节,在C++里都需要关心和处理,比如手动分配内存。 如果是C++工程师转型做Java,则是明显的降维打击,你再也不需要考虑内存的管理,不需要深入底层去做编程,仅仅把它们当成系统自带的类库就好了。今天我们就来推荐几本C++的经典书籍吧。 C++系列书单 ​ C++ Primer Plus C++是在C语言基础上开发的一种集面向对象编程、通用编程和传统的过程化编程于一体的编程语言,是C语言的超集。《C++ Primer Plus(第6版)(中文版)》是根据2003年的ISO/ANSI C++标准编写的。 通过大量短小精悍的程序详细而全面地阐述了C++的基本概念和技术。全书分为18章和10个附录,分别介绍了C++程序的运行方式、基本数据类型、复合数据类型、循环和关系表达式、分支语句和逻辑操作符、函数重载和函数模板、内存模型和名称空间、类的设计和使用、多态、虚函数、动态内存分配、继承、代码重用、友元

我的编程能力从什么时候开始突飞猛进

与世无争的帅哥 提交于 2020-12-18 02:38:05
疫情原因回不去学校,作为一个马上毕业,即将入职腾讯的大四生,分享一下自己的学习历程吧。 本人在大学之前从未接触过编程,最开始的编程学习还是在高考完后,从书店买了本C Primer Plus,然后暑假开始啃,前前后后也就看了几十页。 大一上的时候,来到了华中师范大学,还没有转专业到计算机,一直在自学C语言和看一些计算机入门书籍(编码、计算机科学概论)。 当时也很迷茫,不知道以后道路如何,所以也学了一些杂七杂八的东西(前端 python啥的),所幸的是,当时坚持把C Primer Plus结结实实地精读了一遍,而且几乎练习题都做了,算是比较好的开端。 大一下,转专业到计算机了,开始自学数据结构,算法和C++,部分看完了 数据结构与算法分析,并且把书上的数据结构实现了一遍,记得当时五月份给自己的flag是看完C++ Primer,然后每天上课看,晚饭吃完后也跑去七号楼刷书,最后囫囵吞枣似的看完了大部分。 大一暑假,txr大佬给我说他面试通过了华科的联创团队Unique Studio,而且给我说他们团队都特别厉害,有些人在军训的时候就把C++ Primer给蹲着看完了,当时十分钦佩,幻想也能够进入贵团队。 于是打算在大二上的时候,去报名他们的秋招。所以,那个暑假在学校自学,呆了五十多天。最初,拿起一本APUE,看了一章后感觉看不懂又放下了。 然后,又拿起一本红色封面的算法第四版

[笔记]C++拷贝构造和移动构造

霸气de小男生 提交于 2020-12-13 02:55:45
一、拷贝构造   如果一个构造函数的 第一个参数是自身类类型的引用 ,且任何 额外参数都没有默认值 ,则此构造函数是拷贝构造函数。(《C++Primer,第五版》) class Foo { public : Foo(); Foo( const Foo&); // 拷贝构造函数 Foo& operator =( const Foo&); // 拷贝赋值运算符 };   类的成员中有指针时,使用深拷贝。 #include <iostream> using namespace std; class Foo { public : Foo() { pInt = new int ; *pInt = 1 ; } Foo( const Foo&)= default ; // 拷贝构造函数 Foo& operator =( const Foo&) = default ; // 拷贝赋值运算符 int * pInt; }; // 浅拷贝,foo1和foo2中的pInt指向同一块内存地址 Foo foo1; Foo foo2(foo1); // 深拷贝 class Cop { public : Cop() { pInt = new int ; *pInt = 2 ; } Cop( const Cop& cop) { pInt = new int ; *pInt = * (cop.pInt); } int

C++学习路线

穿精又带淫゛_ 提交于 2020-12-04 02:33:29
一)语言入门: 《C++ Primer》 最新版本:第三版(第四版国外已上架,国内一些网上书店也在预订中) 适合有丰富C经验,缺乏C++经验的。不过我个人一直认为此书带着过于强烈的C语言的痕迹,对于C++的学习未必是好事。 《The C++ Programming Language》/《C++程序设计语言》 最新版本:第三版特别版 简称TC++PL,有其他语言的丰富经验的。(也有人简称之为“TCPL”,但需与另一本《The C Programmer Language》区分开来) 《Essential C++》 《Accelerated C++》 这两本薄一些,都是不错的选择。《Accelerated C++》本人没有读过,从各方面的评价来看,完全值得推荐。 以上几本书都有相应的中文版,而且翻译的质量都不错。上面的书未必都需要读一遍,但无论如何,TC++PL是应该阅读的。 (二)进阶A: 这个路线侧重于语言本身 《Effective C++》 最新版本:第二版(第三版国外已上架,国内一些网上书店也在预订中) 简称EC。C++程序员必读!很多时候,我们说C++圣经不是指TC++PL,而是这一本。《The Pragmatic Programmer》一书中写到:“一旦你发现自己要参与C++项目的开发,赶快跑(不要走)到书店去购买Scott Mayer的《Effective C++》

接口测试 Mock 实战 | 结合 jq 完成批量化的手工 Mock

匆匆过客 提交于 2020-11-30 20:37:12
本文霍格沃兹测试学院学员学习实践笔记。 一、应用背景 因为本章的内容是使用 jq 工具配合完成,因此在开始部分会先花一定的篇幅介绍 jq 机器使用,如果读者已经熟悉 jq ,可以直接跳过这部分。 先来看应用场景,App 经常会有一些信息展示的列表页,比如商家的菜品、股票的公司、文章的列表展示等,例如下面这样: 菜品不够吃的话~不是,是菜品数量较少不够测试的量,假如我们想要测试几百个菜品时,会不会在刷的时候是否有 性能影响 , 展示 是否正常,列表展示的 边界值 测试等; 而要测就得有数据展示,这个时候要是通过后端去找或者造这么多数据是有点麻烦的,其实我们这个测试的测试点就是要测试前端页面的展示和性能,只要有这部分数据就可以,无所谓数据是否真实从数据库得来。 这个时候可以就可以利用 mock 的手段,对这种大数据进行等价类的生成,使前端可以拿到这类数据即可,而 Charles 正是我们实现手工 mock 测试的利器之一! 二、jq 简介 2.1 jq 的概述与用途 按惯例,先看官网对 jq 的解释: jq 官网地址: https://stedolan.github.io/jq/ 大概意思就是轻量灵活的 Json 处理命令行。 用途 说到这大概有些人有点感觉它能用来做什么了,为啥手工 mock 要使用 jq 了?没错!要用它来处理接口返回的 json 数据以达到 mock 的效果。 2

c语言入门到精通怎么能少了这7本书籍?

一世执手 提交于 2020-11-23 11:33:33
C语言作为学编程最好的入门语言,对一个初进程序大门的小白来说是很有帮助的,学习编程能培养一个人的逻辑思维,而C语言则是公认的最符合人们对程序的认知的一款计算机语言,很多大学都选择了使用C语言作为大学生编程的启蒙语言。很多计算机毕业的学生都表示对C语言一窍不通,甚至恐惧去上课,而对C语言稍微了解,可以说简单入门的几乎寥寥无几,是C语言太难吗?C语言入门到精通需要看那些书籍?面对一系列的疑问,今天小编就讲讲关于C语言:   C语言发展至今已经有40年的时间了,然而其程序特性依旧不过时,至今在程序底层语言市场占据不少的份额,不少初学者面对C语言有一种包袱,一种程序逻辑变化以及C语言演变的包袱,市场上的关于C语言的书籍琳琅满目,适合初中者的有哪些呢? 很多初学者,对C语言、c++的概念都是模糊不清的,C语言、c++是什么,能做什么,学的时候,该按照什么线路去学习,学完往哪方面发展,想深入了解,详情可以点击有道云笔记链接了解:http://note.youdao.com/noteshare?id=bd7b6584fb92a7af9851901d7af4dd77 视频教程、开发工具、电子书籍,完整的项目源码等都有分享,专业的老师解答问题! 1.C Primer Plus   《C Primer Plus》作为被业内人士推崇的C语言入门经典,C Primer Plus

【C++札记】养成良好的代码风格

纵饮孤独 提交于 2020-11-20 08:13:58
今天在看C++ Primer一书中运算符重载这部分内容时,我突然认识到,就算是同样的代码,一个字符不差,但是不同的风格,也会给人带来不一样的感觉。 下面是C++ Primer一书中对于Sales_item类的==运算符重载函数,先看看书上的代码: 下面是自己写的: 不用怀疑,这是一模一样的代码,代码的功能也不是本文的重点,这里只是从代码风格上考虑,你会觉得哪种会让你看起来赏心悦目,哪一种又让你看起来昏昏欲睡呢?反正我是觉得书上的代码看起来舒服很多: 书上的写法把inline bool自成一行,可以清晰的看见返回值类型,不像我所写的返回值类型,函数名,形参表等挤在一行,重点可能因此就被埋没了; 书上的写法把每个做相等比较的语句放一行,看上去一目了然,而不是像我把2个&&都写在一行了,阅读的时候还要到处找==表达式。 上面只是一个简单的例子来说明代码风格的重要性,还有很多的编码规范需要注意,比如变量命名啊,注释啊等等,这不是一篇文章所能说清楚的事。 一般来说,大的公司内部会有自己的编码风格要求,如华为内部的华为c语言编程规范,你在刚进入这些公司的时候,这些肯定是要去阅读的,如果你不想在review代码的时候被你同事嫌弃的话。 如果你的公司没有类似的文档要求,也没关系,网上有份Google-C++编程规范相信会值得你去仔细阅读品味,这是李开复宣称的地球上最好的一份C++编程规范,没有之一

双十一,站在巨人的肩膀上囤最优秀的编程书

耗尽温柔 提交于 2020-11-17 07:56:25
双十一,囤点什么书呢?小编想了想,新书?经典书?畅销书?感觉似乎每一类都值得推荐 。每一年出版社的专业新书上百本,如何在适宜的时间选您需要的好书?双十一就是一个很好的时间选择。让小编带你浏览本年度最值得推荐的双十一好书。 经典书必备(思维修炼必备) 1、编程珠玑(第2版) 本书是计算机科学方面的经典名著。书的内容围绕程序设计人员面对的一系列实际问题展开。作者Jon Bentley 以其独有的洞察力和创造力,引导读者理解这些问题并学会解决方法,而这些正是程序员实际编程生涯中至关重要的。本书的特色是通过一些精心设计的有趣而又颇具指导意义的程序,对实用程序设计技巧及基本设计原则进行了透彻而睿智的描述,为复杂的编程问题提供了清晰而完备的解决思路。本书对各个层次的程序员都具有很高的阅读价值。 2、数学之美 第三版 这是一本备受推崇的经典科普作品,被众多机构推荐为数学学科的敲门砖,是信息领域大学生的必读好书。 数学既是对于自然界事实的总结和归纳,又是抽象思考的结果。在《数学之美》里,吴军博士集中阐述了他对数学和信息处理这些专业学科的理解,把数学在IT领域,特别是语音识别、自然语言处理和信息搜索等方面的美丽之处予以了精彩表达,这些都是智能时代的热门技术话题。 本书还用了大量篇幅介绍各个领域的典故,是文科生也可以看懂的科普读物。成为一个领域的大师有其偶然性,但更有其必然性

c++名称空间 (c++ primer plus 笔记)

删除回忆录丶 提交于 2020-11-04 06:56:25
c++名称空间 名称空间术语 新的名称空间特性 名称空间的使用理念 名称空间术语 c++中的名称包括:变量、函数、结构、枚举、类以及类和结构的成员。 名称空间作用:当程序项目越来越大时,c++中的名称冲突可能性将会增加,名称空间的出现即为了解决c++中名称冲突问题。 声明区域:是可以在其中进行声明的区域。例如,全局变量其声明区域为其声明所在的文件,局部变量其声明区域为其声明所在的代码块。 潜在作用域:变量的潜在作用域从声明点开始,到其声明区域的结尾。因此潜在作用域比声明区域小,这是由于变量必须在定义后才能使用。但声明区域中的变量并非在潜在作用域的任何位置都是可见的,它可能被别一个在嵌套声明区域中声明的同名变量隐藏。 新的名称空间特性 名称空间作用: c++新增了一种功能,即通过定义一种新的声明区域来创建命名的名称空间,这样做的目的之一是提供一个声明名称的区域。一个名称空间中的名称不会与另外一个名称相同名称发生冲突,同时允许程序的其他部分使用该名称声明的东西。 创建名称空间关键字namespace,语法格式如下: namespace name { int value; void func(); } 名称空间可以是全局的,也可以位于另一个名称空间中,但不能位于代码块中。 名称空间中声明的名称的链接性为外部的,除非它引用了常量。 全局名称空间对应于文件级声明区域