shared_ptr和new的结合使用 ? 如果我们不初始化一个智能指针,它就会被初始化一个空指针。 ? 一个shared_ptr默认初始化为一个空指针。我们也可以使用new返回的指针来初始化一个shared_ptr: ? 接受指针参数的智能指针构造函数是explicit的。因此,我们不能将一个内置 ...
分类:
编程语言 时间:
2018-04-25 20:12:05
阅读次数:
253
第12章 类和动态内存分配 1、不能在类声明中初始化静态成员变量,这是因为声明描述了如何分配内存,但并不分配内存。可以在类声明之外使用单独的语句进行初始化,这是因为静态类成员是单独存储的,而不是对象的组成部分。注意:静态成员在类声明中声明,在包含类方法的文件中初始化。初始化时使用作用域操作符来指出静 ...
分类:
编程语言 时间:
2018-04-25 17:14:48
阅读次数:
180
constexpr函数 constexpr函数: constexpr函数是指用于常量表达式的函数,函数的返回值类型以及所有的形参类型必须是字面值,而且函数必须只有一条return语句。 分析 首先说明一下常量表达式的定义:常量表达式是指值不会改变且在编译阶段就可以得到结果的表达式。 (1)[test ...
分类:
编程语言 时间:
2018-04-22 15:59:33
阅读次数:
196
c++名称空间 1. 名称空间术语 2. 新的名称空间特性 3. 名称空间的使用理念 1. 名称空间术语 c++中的名称包括:变量、函数、结构、枚举、类以及类和结构的成员。 名称空间作用:当程序项目越来越大时,c++中的名称冲突可能性将会增加,名称空间的出现即为了解决c++中名称冲突问题。 声明区域 ...
分类:
编程语言 时间:
2018-04-22 13:58:27
阅读次数:
186
转换构造函数 转换构造函数:如果构造函数只接受一个实参,则实际上定义了转换此类类型的隐式转换机制,有时我们把这种构造函数称作转换构造函数。 能通过一个实参调用的构造函数定义了一条从构造函数的参数类型向类类型隐式转换的规则。 例如,在Sales_data类中,接受string的构造函数和接受istre ...
分类:
编程语言 时间:
2018-04-22 13:08:39
阅读次数:
194
构造函数初始值列表 1. 构造函数的初始值有时必不可少 ? 有时我们可以忽略数据成员初始化和赋值之间的差异,但并非总能这样。如果成员时const或者是引用的话,必须将其初始化。类似的,当成员属于某种类类型且该类没有定义默认构造函数时,也必须将这个成员初始化。 例如: 和其他常量对象或者引用一样,成员 ...
分类:
编程语言 时间:
2018-04-22 13:05:58
阅读次数:
332
默认构造函数的作用 1. 默认构造函数 C++ 默认构造函数是对类中的参数提供默认值的构造函数,一般情况下,是一个没有参数值的空函数,也可以提供一些的默认值的构造函数,如果用户没有定义构造函数,那么编译器会给类提供一个默认的构造函数,但是只要用户自定义了任意一个构造函数,那么编译器就不会提供默认的构 ...
分类:
编程语言 时间:
2018-04-22 12:47:42
阅读次数:
199
Screen类 ? 我们可以在声明和定义的地方同时说明inline,但这么做其实是合法的。不过,最好只在类外部定义的地方说明inline。 可变数据成员 可变数据成员:有时(但并不频繁)会发生这样一种情况,我们希望能修改类的某个数据成员,即是在一个const成员函数内,可以在变量的申明中加入muta ...
分类:
编程语言 时间:
2018-04-21 16:16:23
阅读次数:
227
Sales_data类 头文件Sales_data.h ...
分类:
编程语言 时间:
2018-04-20 22:08:33
阅读次数:
164
第十一章 使用类 1、操作符函数的格式:operator op(argument-list)。op是将要重载的操作符。 2、操作符重载函数的两种调用方式:①函数表示法:C=A.operator+(B);A、B、C都是类对;②操作符表示法:C=A+ B;操作符左侧的对象A是调用对象,操作符右边的对象B ...
分类:
编程语言 时间:
2018-04-20 17:51:09
阅读次数:
194