继承、虚函数注意点
- 哪些函数不能被继承:
构造函数、析构函数、拷贝构造函数、赋值操作符重载函数(赋值构造函数)
- 哪些函数不能为虚函数:(定义虚函数一般是为了使用多态性质)
普通函数(非成员函数):不属于类的成员,不能用于多态,只能被重载。
静态成员函数:静态成员函数属于类的信息,被所有对象共享,不归某个对象所有,没有动态绑定的必要性。
构造函数:
友元函数:c++不支持友元函数的继承,因此不能在派生类中被覆盖,没有必要为虚函数
内联成员函数:内联函数在编译阶段内联展开,减少函数调用的代价,而虚函数用于多态,在运行时才能确定具体调用哪个函数,两者不可能统一。
赋值构造函数:虽然基类中可以将成员函数operator=定义为虚函数,但赋值构造函数要求形参类型和该类本身类型相同,因此积累中的赋值构造函数形参类型为基类类型,即使声明为虚函数,也不会执行子类的赋值操作符。