![](https://img-blog.csdnimg.cn/20190918140053667.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C++ Primer Plus
对书中一些让人困惑的点进行总结
苞米地里捉小鸡
程序蒟蒻
展开
-
C++11中变量初始化方法汇总
1 背景参考资料[1]P39提到,在C++语言中,初始化与赋值并不是同一个概念:初始化:创建变量时赋予其一个初始值。赋值:把对象(已经创建)的当前值擦除,而用一个新值来代替。参考资料[1]P39指出,初始化是一个异常复杂的问题,因此有必要专门对这个问题进行总结。2 列表初始化参考资料[1]P39指出,作为C++11新标准的一部分,用花括号来初始化变量得到了全面应用(在此之前,只...转载 2020-03-01 23:04:45 · 352 阅读 · 0 评论 -
类-类型成员
1.什么是类的类型成员比如string::size_type就是string类中的某一个类型成员,是类自定义的某种类型在类中的别名。2.类型成员的定义方法1.类型成员与其他成员一样存在访问限制,即可用private和public进行修饰。2.定义类型成员可以使用typedef和using关键字。class Screen {public: typedef std::string...原创 2020-02-29 16:37:31 · 716 阅读 · 0 评论 -
decltype总结
decltype和auto都可以用来推断类型,但是二者有几处明显的差异:auto忽略顶层const,decltype保留顶层const;对引用操作,auto推断出原有类型,decltype推断出引用;对解引用操作,auto推断出原有类型,decltype推断出引用;auto推断时会实际执行,decltype不会执行,只做分析。总之在使用中过程中和const、引用和指针结合时需要特别小心。...原创 2020-02-29 16:17:30 · 97 阅读 · 0 评论 -
深入解析new、全局和局部operator new、::new、placement new
1. new分为两步a、内存分配 调用相应的operator new( )分配内存 b、构造函数 调用相应的构造函数实验代码:class T{ public: T(){ cout << "构造函数。" << endl; } ~T(){ cout << "析...原创 2020-02-17 10:33:31 · 1153 阅读 · 0 评论 -
for_each()函数、临时对象的产生与()运算符重载的意义
所谓临时对象,就是一种无名对象(unamed objects),有时候使用临时对象可以使程序干净清爽,比如可以在类型名称之后直接加一对小括号,并可指定初值,例如shape(3,5)或者int(8),其意义相当于调用相应的constructor并且不指定对象名称。for_each()是一种STL函数,存在于algorithm库中,它可以用于很多容器内,for_each(iterator,itera...原创 2020-02-16 18:35:32 · 351 阅读 · 1 评论 -
非类型的模板参数
1.非类型的模板类形参对于函数模板与类模板,模板参数并不局限于类型或者适配器、指针(迭代器),普通值也可以作为模板参数。在基于类型参数的模板中,你定义了一些具体的细节来加以确定代码,直到代码被调用时这些细节才被真正的确定。但是在这里,我们面对的是这些细节是值,而不是类型,当要使用基于值的模板时,必须显式地指定这些值,才能够对模板进行实例化。比如可以这样:template<class T...原创 2020-02-16 13:50:07 · 790 阅读 · 0 评论 -
C++ Primer Plus 第18章 C++新标准
1.初始化1.可以使用大括号括起来的列表表示,可以添加等号也可不添加int x = {5};int *arr = new int[4]{2,4,6,7};2.动态分配内存也可以直接列表初始化,而不必循环赋值3.初始化类对象的时候也可以用大括号代替圆括号来调用构造函数但是,如果类有将模板std::initializer_list作为参数的构造函数,则只有该构造函数可以使用列表初始化形式...原创 2020-02-13 18:23:51 · 236 阅读 · 0 评论 -
私有成员变量的理解
私有成员变量的概念,在脑海中的现象是,以private关键字声明,是类的实现部分,不对外公开,不能在对象外部访问对象的私有成员变量.然而,在实现拷贝构造函数和赋值符函数时,在函数里利用对象直接访问了私有成员变量,因而,产生了困惑.下面以具体实例进行说明:疑惑:为什么第26行和第32行代码可以编译通过,而第39行和第40行代码会产生编译错误class CTest {public: C...转载 2020-02-13 16:16:20 · 348 阅读 · 0 评论 -
C++ Primer Plus 第14章 虚基类和类模板等
1.成员对象的列表初始化和继承列表初始化的区别派生类对象的构造函数初始化,构造函数在成员初始化列表中使用基类类名来调用特定的基类构造函数V2(int &w,double &q):V1(w){} //v1是基类,这种情况初始化列表中是用基类名称而一个类中包含其他类对象作为成员的话,构造函数在成员初始化列表中使用成员名,比如Student(string &s,vala...原创 2020-02-12 12:00:14 · 594 阅读 · 0 评论 -
C++ Primer Plus 第11章 使用类
1.运算符重载技术Time operator+(const Time & t) const; //Time is Return type operator+ is \Operator overloading const,The second const keyword means that the function does not change the objectTime Ti...原创 2020-01-26 23:03:42 · 137 阅读 · 0 评论 -
C++ Primer Plus 第10章 对象和类
1.什么是接口?对于程序中的类来说,public用户不能直接访问类来进行操作,但是可以调用类中的方法,方法就是public用户和类之间接口的组成部分,因此为了用户能使用类中的成员变量,必须要编写类中的方法,即其中的接口。另外我们一般将接口(类定义)放在头文件中,并将实现(类方法的代码)放在源代码中,为什么要用这种方式在之前的博客有写到。2. #ifndef 后面的头文件名为什么要大写为了区...原创 2020-01-26 20:57:19 · 136 阅读 · 0 评论 -
C++ Primer第9章相关问题及总结
1.头文件命名问题如果文件名包含在双引号中,则编译器将首先查找当前的工作目录或源代码目录(或其他目录,这取决于编译器),如果没有在那里找到头文件,则将会在标准位置查找,因此在包含自己的头文件时,应使用引号而不是尖括号。2.自动存储持续性在代码块定义的变量,它的生命即该变量的存在时间和作用域将被限制在该代码块中,这种就是局部变量。3.局部变量和全局变量的关系当两个变量的名称相同时,当程序运...原创 2020-01-12 21:41:03 · 114 阅读 · 0 评论 -
C++ Primer 第8章相关问题及总结
1.C++内联函数是什么?1.内联函数的运行速度比常规函数稍快,这是因为c++用空间换时间的原因。2.如果代码执行的时间比处理函数调用机制的时间长,那么这时候就可以用内联函数。3.内联函数不能递归。4.内联函数适合小规模运算,不能太长。5.内联函数一般写在文件的开头,而且本身代码量不高,所以不需要原型。2. 创建引用变量时的注意事项必须在声明引用变量时进行初始化。int * con...原创 2020-01-12 21:06:50 · 157 阅读 · 0 评论 -
C++ Primer第7章相关问题回顾与总结
1.C++为什么要声明函数,不声明可以吗?1.首先C++声明函数是为了广大程序员着想,因为也许函数并不都是在一个文件中使用的,如果多个文件同时需要一个函数,那在每个文件中都对同一个函数进行定义效率极低,并且当需要修改维护函数定义时,我的天,意味着你需要一个一个地修改相关函数,那将会是一个庞大的工作量,所以一般将函数声明写在头文件中,文件只需要包含这个头文件就可以使用相关函数。将函数定义写在.cp...原创 2020-01-12 18:26:33 · 153 阅读 · 0 评论 -
C++声明、定义和初始化
1.C++初始化的几种方式int num(1024); //直接初始化 int num1 = 1024; //复制初始化 int num2 = {1024}; //c++规则初试化int num3{1024}; //可以省略"=" 在C++中“初始化不是赋值”,初始化指创建变量并给它赋初始值,而赋值则是擦除对象的当前值并用新值代替。2.变量的初始化规则(1).内置类型...原创 2020-01-10 17:13:35 · 544 阅读 · 0 评论 -
C++const typedef和#define的区别
1.#define和typedef这两个方法都可以创建类型别名,#dfefine为预处理器编译指令,typedef是关键字#define的通用格式为:#define aliasName typeName //注意没有分号;typedef的通用格式为:typedef typeName aliasName;需要注意的是,在预编译环节,#define命令是直接将标识符定义为字符串格式,这...原创 2020-01-08 16:29:22 · 118 阅读 · 0 评论 -
C++ #define宏定义问题及解答
一、#define的基本用法#define是C语言中提供的宏定义命令,其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率,但学生在学习时往往不能 理解该命令的本质,总是在此处产生一些困惑,在编程时误用该命令,使得程序的运行与预期的目的不一致,或者在读别人写的程序时,把运行结果理解错误,这对 C语言的学习很不利。1 #define命令剖析1.1 #define的...转载 2020-01-08 16:02:54 · 1369 阅读 · 0 评论 -
C++ Primer 第五章和第六章流程控制等知识点
前言写在最前,本次内容是关于基于零基础学C#这本书第四章的相关要点,相当于每学完一章的总结1. If语句语法形式如下if(判断){ 表达式;}流程图如下:Created with Raphaël 2.2.0开始表达式?语句块结束yesno2. If …else语句代码格式如下if(判断表达式){ 语句1;}else{语句2}流程图表示如下:Created wi...原创 2020-01-08 10:57:31 · 131 阅读 · 1 评论 -
C++ Primer第四章 复合类型问题以及感悟
本章主要介绍了数组、字符串、结构体、枚举、指针等基础知识。我在复习的基础上对自己感到薄弱以及比较细节的问题进行了一个梳理和总结。原创 2020-01-07 22:27:44 · 128 阅读 · 0 评论 -
C++ Primer第三章问题以及感悟
这一章主要是关于变量处理方面的知识,包括变量的命名规则、变量类型、取值范围、分配内存、运输符和类型转换相关的知识。1.预处理#define,通用格式是什么?在c++编译过程中,需要先将源代码传递给预处理器,#define和#include一样也是一个预处理器编译指令通用格式为#define iNAME 12345;但是我们会发现,不同的变量类型#define并没有很清晰的表达出来,因此...原创 2020-01-06 18:45:55 · 266 阅读 · 0 评论 -
C++Primer第二章问题以及感悟
目录1.cout、cin是什么?2."<<"表示什么?3为什么变量必须声明?4. 字符串中的数字和整型数字有什么区别?5.连续使用赋值语句的顺序6.类是什么,有什么作用?7.对象是什么,有什么作用?8。函数是什么?9.函数原型和函数定义的区别?10.为什么要用名称空间?1.cout、cin是什么?1.1cout是什么?cout是一个o...原创 2020-01-06 11:56:12 · 153 阅读 · 0 评论 -
解决方法:VS2017提示PCH警告,出现未知错误,未生成IntelliSense PCH文件
问题描述:往MFC项目中添加头文件后,打开头文件发现有错误,原因是未生成IntelliSense PCH文件。解决方法:(1).点击功能栏中的工具(T),然后找到选项(O)。(2).打开文本编辑器,选择c/c++选项。(3).将IntelliSense选项条中的禁用IntelliSense选项从“False”改为"True"即可。(4).回到代码,发现问题已经解...原创 2020-01-03 11:37:16 · 12031 阅读 · 5 评论