C++ 类

C++ 类模板

vector 类

string 类

类定义

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、友元可以是函数,也可以是一个类,为类时,该类的所有成员都为友元。