class ClassName [: 派生方式 基类名, ...]
{ [private:] 成员前缀 数据类型 数据成员名; 方法前缀 方法名([参数列表]); virtual 方法名([...]) = 0; // 纯虚函数无需实现部分, 使类成为抽象类不能产生实例 protected: public: ClassName([...]) [: 基类名([...]) , 常量名(初值), ... ]; // 构造函数 ~ClassName();{ ... } // 析造函数 void myMethod(); // 公有方法 friend FriendMethod(ClassName &); // 友元函数 }[myClass, ...];
ClassName::ClassName([...]) { // 构造函数体 }
void ClassName::myMethod() { // 方法体 } |
标识符 | 描述 |
---|---|
class | 类定义关键词 |
ClassName | 自定义的新类名
构造函数,在建立对象时自动调用 |
~ClassName | 析构函数,在销毁对象时自动调用 |
private | 私有成员,其后的成员仅本类可访问 |
protected | 保护成员,其后的成员仅本类和派生类可访问 |
public | 公有成员,其后的成员任何地方都可访问 |
myClass | 实例对象,等同于语句:ClassName myClass; |
friend | 表示友元,友元函数(非本类成员)可访问本类的所有成员 |
派生方式 | 决定从基类复制的方法和数据在本类的访问规则 |
基类名 | 从已经存在的类派生,复制其中的所有方法和数据
基类构造函数 |
标识符 | 描述 |
---|---|
virtual | 虚函数, 表示该函数调用采用晚绑定, 即实际对象的该函数, 而不是简单地调用变量类型的该函数 例: 父类和子类有同名同参的函数, 而指针变量类型是父类实际上可以指向子类, 此时调用时, 若为虚函数会调用子类的 |
派生方式 | 原访问属性 | 派生后的访问属性 |
---|---|---|
private | 所有 | 不可直接访问(不常用) |
protected | private | 不可直接访问 |
protected | protected | |
public | protected | |
public | private | 不可直接访问 |
protected | protected | |
public | public |
当从两上及以上基类派生时,各基类成员在本类中并存,即使它们是从同一个更低层的基类派生。例:
class a {
public: int aa; } ; class b1 : public a { }; // 单继承 class b2 : public a { }; // 单继承 class c : public b1,public b2 // 多继承 { // 这里存在两个 int aa,访问时需要指明为 b1::aa 或者 b2::aa } |
友元机制是突破类封装的简便方法,对友元而言,本类的所有成员均可见。
1、要使友元函数能访问类,需要提供类实例,所以有一个参数类型为某类的引用或常量。
2、友元函数为另一个类的成员时,语法为:friend OtherClass::OtherMethod(MyClass &[,...])。
3、友元可以是函数,也可以是一个类,为类时,该类的所有成员都为友元。