基类成员\继承方式 |
共有继承 |
私有继承 |
保护继承 |
私有成员 private |
Private |
不可访问 |
不可访问 |
保护成员 protected |
protected |
private |
protected |
公有成员 public |
public |
private |
protected |
在派生类构建构造函数和析构函数时候需要注意:
基类的构造函数和析构函数不能被派生类继承;
如果基类没有定义构造函数,派生类也不能定义构造函数,都要采用默认构造函数(由于编译器对提供构造函数有条件,那么在这种情况下,啥都别干就行了)。
如果基类定义了带参数的构造函数,那么派生类要定义性的构造函数,提供一个将参数传递给基类构造函数的途径。
如果派生类的基类也是派生类,每个派生类只负责直接基类的构。
派生类是否要定义析构函数和所属的基类无关。
基类和派生类的构造函数和析构函数的执行顺序如下:
基类的构造函数
派生类的构造函数
派生类的析构函数
基类的析构函数
虚函数与多态性、纯虚函数
用virtual关键字申明(定义)的函数叫做虚函数,在基类的函数前面加上virtual关键字,在派生类中重写该函数,运行时会根据对象的实际类型来调用相应的函数,这就是c++的多态性,在基类中定义一个统一的接口函数,在不同的派生类中重写该函数,实现不同的功能。
纯虚函数是指被标明为不具体实现的虚成员函数,凡是有纯虚函数的类叫做抽象类。抽象类不能声明对象,只能作为基类为派生类服务,派生类必须完全实现基类的纯虚函数,否则派生类也会变成抽象类。
Virtual void functionName()=0;//纯虚函数
函数的覆盖与隐藏
构成覆盖的条件:
基类函数必须是虚函数;
发生覆盖的2个函数必须分别处于基类和派生类中;
函数名称与参数列表必须完全相同(是不是返回值类型也必须相同?)
构成隐藏的条件:
基类和派生类的函数完全相同,基类没有使用virtual关键字;
基类和派生类的函数名相同,参数不同,此时不管基类函数是否使用virtual关键字,基类的函数都被隐藏。
函数重载发生在同一个类中,覆盖和隐藏发生在基类和派生类关系中。
引用
偶然的机会看到了《Effective C++》中关于引用的建议,对于不需要修改原值的引用,使用引用时尽量加上const关键字,避免对原值造成修改(记不大清楚了,大概是这样)。
引用的定义:int &a=b;
看到一个小程序,不引入第三个变量,交换2个变量的值。
void change(int& a,int& b)
{
a=a+b;
b-a-b;
a=a-b;
}//有一面试的时候被问到了,当时没答出来
VC++程序编译链接的原理和过程
有点小复杂,一时间理解不了,有空慢慢研究。
上一页 [1] [2] [3] [4] [5]