引入this
** this是一个常量指针(const pointer),因此不允许改变this中保存的地址 **
const成员函数(常量成员函数)
** 常量对象,以及常量对象的引用或者指针都只能调用常量成员函数 **
类相关的非成员函数
** 如果非成员函数是类接口的组成部分,则这些函数的声明应该与类在同一个头文件中. **
构造函数
- 构造函数不能声明为const
- 编译器只有在发现类没有生成任何构造函数时,才会自动生成默认的构造函数.
- 如果类中含有复合类型(指针或者引用)时,执行默认的构造函数可能为得到无法确定的值.
-
=default
的含义:c++11标准中可以使用default来显式要求编译器生成默认的构造函数.
类名()=default;//该构造函数不含有任何实参,因此是默认的构造函数.
- 构造函数初始值列表(constructor initialize list)
在构造函数参数列表和函数体({})之间使用:号进行分隔,各数据成员之间使用,号进行分隔. - 在类内定义的vector和string数据成员,可以使用系统默认的拷贝/赋值/和销毁,而不用考虑内存管理的问题,所以能用vector和string的,尽量用vector和string来代替array和char*吧.
- ** struct和class的区别 **
struct和class都可以定义类,区别在于访问权限. - ** friend(友元) **
如果需要其他类或者函数访问类的非公有成员(private或者protected),可以在类中声明其他类或者函数为友元(friend关键词).- 要注意的是,友元的声明仅仅是指定了访问权限,不受访问关键词(public/private/protected)的约束.但友元的声明并不是通常意义的声明.如果我们希望类的用户能够调用某个友元函数,那么我们必须在类的友元声明之外对该函数在额外声明一次. **
- 如果一个类定义了一个友元类,则友元类可以访问该类的所有非公有成员.
- ** mutable声明 **
如果我们希望在const成员函数中改变某个数据成员,最好在该数据成员的声明前加入mutable关键字.
private:
mutable size_t access_str;
- ** 委托构造函数 **
c++11新标准中制定的,简单的说就是该构造函数通过其他的构造函数执行初始化操作. - ** 聚合类 **
如果一个类满足如下条件,称为聚合类:- 所有成员都是public的
- 没有定义任何构造函数
- 没有类内初始值
- 没有基类,没有virtual函数
聚合类通过使用{}来进行成员初始化,要注意的是,必须保证顺序是一致的.
- ** 静态成员(static memeber) **
- 使用作用域运算符::访问静态成员.而且,最重要的是,类的对象可以直接访问该类的静态成员,而不用作用域运算符(
::
) - 在类的外部定义静态成员时,不能重复
static
关键字,该关键字只出现在类内部的声明语句.
网友评论