目录
总结表格
概念 | 说明 | 格式 | |
类和对象 | 类成员函数 | 类的成员函数是指那些把定义和原型写在类定义内 部的函数,就像类定义中的其他变量一样。 | 定义在类的内部: (inline) 返回值 方法名 参数列表 |
定义在类的外部: 返回值 类名::方法名 参数列表 | |||
类访问修饰符 | 类成员可以被定义为 public、private 或 protected。 默认情况下是定义为 private。 | 公有成员在程序中类的外部是可访问 的,可以不使用任何成员函数来设置 和获取公有变量的值, | |
私有成员变量或函数在类的外部是不 可访问的,甚至是不可查看的。只有 类和友元函数可以访问私有成员。 | |||
保护成员变量或函数与私有成员十分相 似,但有一点不同,保护成员在派生类 (即子类)中是可访问的。 | |||
构造函数 | 类的一种特殊的成员函数,它会在每次创建类的新 对象时执行。构造函数的名称与类的名称是完全相 同的,并且不会返回任何类型,也不会返回 void。 构造函数可用于为某些成员变量设置初始值。 | 1. 类内部定义:类名 (参数列表) 2. 类外部定义:类名::类名 (参数列表) 3.重载构造函数:参数列表的不同 | |
默认构造函数: 未提供默认构造函数时C++提供一个无参的默认构造 函数,仅负责创建对象,不负责初始化工作。 | |||
带参数的构造函数: 构造函数带有参数,这样在创建对象时就会给对象赋 初始值。 | |||
只要定义了一个构造函数,C++就不再提供默认的构 造函数。 | |||
析构函数 | 没有返回类型,没有参数,不能随意调用,也没有 重载,只是在类对象生命期结束的时候,由系统自 动调用。 | 1. 类内部定义 ~类名() 2. 类外部定义 ~类名::类名() | |
拷贝构造函数 | 拷贝构造函数是一种特殊的构造函数,它在创建对 象时,是使用同一类中之前创建的对象来初始化新 创建的对象。 常用于: 1. 通过使用另一个同类型的对象来初始化新创建的 对象。复制对象把它作为参数传递给函数。 2. 复制对象把它作为参数传递给函数。 3. 复制对象,并从函数返回这个对象。 | 类名(const 类名 &对象) | |
友元函数 | 类的友元函数是定义在类外部,但有权访问类的所 有私有(private)成员和保护(protected)成员。 注意: 尽管友元函数的原型有在类的定义中出现过,但是 友元函数并不是成员函数。 如果要声明函数为一个类的友元,需要在类定义中 该函数原型前使用关键字 friend | 在类定义中:friend 函数原型 | |
内联函数 | 定义:当函数被声明为内联函数之后, 编译器会将其 内联展开, 而不是按通常的函数调用机制进行调用。 | 在类定义中: (inline) 成员函数 | |
建议: 1. 不要内联超过 10 行的函数. 谨慎对待析构函数, 析 构函数往往比其表面看起来要更长, 因为有隐含的成 员和基类析构函数被调用。 2. 内联那些包含循环或 switch 语句的函数常常是得不 偿失 (除非在大多数情况下, 这些循环或 switch 语句从 不被执行). | |||
静态成员 | 定义: 静态成员在类的所有对象中是共享的。如果不存在其他 的初始化语句,在创建第一个对象时,所有的静态数据 都会被初始化为零。我们不能把静态成员的初始化放置 在类的定义中,但是可以在类的外部通过使用范围解析 运算符 :: 来重新声明静态变量从而对它进行初始化。 | 关键字static | |
静态数据成员使用场合一般为: 1. 用来保存流动变化的对象个数 2. 作为一个标志,指示一个特定的动作是否发生 3. 一个指向一个链表第一成员或最后一个成员的指针 | 不能类的定义中初始化。 必须在类的外部通过使用范围 解析运算符 :: 来重新声明静态 变量从而对它进行初始化。 | ||
静态成员函数: 1. 一个静态成员函数不与任何对象相联系,故不能对 非静态成员进行默认访问。 2. 静态成员函数没有this指针,而非静态成员函数由一 个指向当前对象的this指针。 | 类定义中:在成员函数前加static关键字 | ||
this指针 | 1. 每个对象都有一个特殊的指针 this,它指向对象本身。 2. 每一个对象都能通过 this 指针来访问自己的地址。 this 指针是所有成员函数的隐含参数。 3. 友元函数没有 this 指针,因为友元不是类的成员。只 有成员函数才有 this 指针。 | 在成员函数内部,它可以用来指向调用对象。 this->成员数据或成员方法 | |
指向类的指针 | 指向类的指针的声明 | 类名* 变量名; | |
访问指向类的指针的成员 | 指向类的指针—>成员 | ||
类的继承和多态 | ... | ... | ... |