C++ Primer (二)

C++ 类和标准库

1. 类中的this指针:成员函数通过一个名为this的额外隐式参数来访问调用它的对象,当调用一个成员函数时,实际是用该函数的对象地址初始化this,this是一个常量指针总是指向当前对象。

2. const成员函数:this的类型是指向类类型非常量版本的常量指针,eg:Sales_data *const 

    常量对象,常量对象的引用或指针都只能调用常量成员函数(const关键字放在成员函数参数列表后面),紧跟在参数列表后面的const表示this是一个指向常量的指针

    this是指向常量的指针,所以常量成员函数不能改变调用它的对象的内容

    const成员函数如果以引用返回*this,那么它返回类型是常量引用

3. 编译器分两步处理类:首先编译成员的声明,然后才是成员函数体。因此,成员函数体可以随意使用类中的其他成员而无须在意这些成员出现的次序

4. 默认构造函数初始化:

    (1)如果存在类内初始值,用它来初始化成员

    (2)否则,默认初始化该成员

    只有当类没有声明任何构造函数时,编译器才会自动地生成默认构造函数

    如果类包含内置或复合类型成员,则只有当这些成员全部被赋予了类内初始值时,才适用于合成的默认构造函数,否则默认初始化后的值时未定义的

    如果类内自定义了构造函数,又想生成默认构造函数需要这样写,类名()=default,告诉编译器生成默认构造函数

5. 友元:类可以允许其他类或者函数访问它的非公有成员

    友元声明:友元需要声明两次,一次在类内声明指定了访问的权限,但它不是一个通常意义上的函数声明,如果类的用户可以调用友元需要在类的外部专门对函数进行一次声明

6. 封装:

    (1) 确保用户代码不会无意间破坏封装对象的状态

    (2) 被封装的类的具体实现细节可以随时改变,而无须调整用户级别的代码

7. 可变数据成员:mutable关键字修饰的数据成员,即使在一个const成员函数内可以被修改

8. 当提供类内初始值时,必须以符号=或花括号表示 

猜你喜欢

转载自www.cnblogs.com/demian/p/12097814.html