C++ 类和标准库
1. 类中的 this 指针: 成员函数通过一个名为 this 的额外隐式参数来访问调用它的对象, 当调用一个成员函数时, 实际是用该函数的对象地址初始化 this,this 是一个常量指针总是指向当前对象.
2. const 成员函数: this 的类型是指向类类型非常量版本的常量指针, eg:Sales_data *const
常量对象, 常量对象的引用或指针都只能调用常量成员函数 (const 关键字放在成员函数参数列表后面), 紧跟在参数列表后面的 const 表示 this 是一个指向常量的指针
this 是指向常量的指针, 所以常量成员函数不能改变调用它的对象的内容
3. 编译器分两步处理类: 首先编译成员的声明, 然后才是成员函数体. 因此, 成员函数体可以随意使用类中的其他成员而无须在意这些成员出现的次序
4. 默认构造函数初始化:
(1) 如果存在类内初始值, 用它来初始化成员
(2) 否则, 默认初始化该成员
只有当类没有声明任何构造函数时, 编译器才会自动地生成默认构造函数
如果类包含内置或复合类型成员, 则只有当这些成员全部被赋予了类内初始值时, 才适用于合成的默认构造函数, 否则默认初始化后的值时未定义的
如果类内自定义了构造函数, 又想生成默认构造函数需要这样写, 类名 ()=default, 告诉编译器生成默认构造函数
5. 友元: 类可以允许其他类或者函数访问它的非公有成员
友元声明: 友元需要声明两次, 一次在类内声明指定了访问的权限, 但它不是一个通常意义上的函数声明, 如果类的用户可以调用友元需要在类的外部专门对函数进行一次声明
6. 封装:
(1) 确保用户代码不会无意间破坏封装对象的状态
(2) 被封装的类的具体实现细节可以随时改变, 而无须调整用户级别的代码
7. 可变数据成员: mutable 关键字修饰的数据成员, 即使在一个 const 成员函数内可以被修改
8. 当提供类内初始值时, 必须以符号 = 或花括号表示
来源: http://www.bubuko.com/infodetail-3351978.html