c++那些成员函数不能被继承:

构造函数:构造函数使用来初始化对象的与父类的其他成员不同,他不能被继承,子类可以继承父类所有的成员变量和成员方法,但不继承父类的构造方法),因此在创创建子类对象时,为了初始化继承下来的数据需要先调用父类的构造函数。

析构函数:子类的析构函数中会调用父类的析构函

如果没有将父类的析构函数定义为虚函数

当父类指针只想子类对象时,如果基类的析构函数不是virtual,那么子类的析构函数将不会被调用,子类的资源没有正确是释放,因此造成内存泄漏

赋值运算符重载函数:

每一个类被实例创建的时候如果没有定义“赋值重载运算符",那么斌一起会自动生成一个隐含的默认的”赋值运算符重载函数“。C++标准规定:如果派生类中声明的成员与基类的成员同名,那么,基类的成员会被覆盖,哪怕基类的成员与派生类的成员的数据类型和参数个数都完全不同。所以,“赋值运算符重载函数”不是不能被派生类继承,而是被派生类的默认“赋值运算符重载函数”给覆盖了。

什么函数不能证明为虚函数:

虚函数必须是积累的非静态成员函数,器访问权限可以是protected或public.

1:普通函数
普通函数不属于类的成员函数,

2:友元函数

因为c++不支持友元函数的继承

3:静态函数

静态成员函数对于每个类来说只有一份代码,不归某个具体的对象所有

4.内联函数

那内联函数就是为了在代码中直接展开,减少函数调用花费的代价,虚函数是为了在继承后对象能够准确的执行自己的动作,这是不可能统一的。

5.构造函数

虚函数的作用在于通过父类的指针或者引用来调用它的时候能够变成调用子类的那个成员函数。而构造函数是在创建对象时自动调用的,不可能通过父类的指针或者引用去调用,因此也就规定构造函数不能是虚函数。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐