c++基类不能被继承的成员函数

构造函数(包括拷贝构造)、析构函数、赋值函数、自动转换函数 都不能被继承。

#include<iostream>
using namespace std;
class A
{
protected:
     explicit A(int num=0):data(num) {}
protected:
     A & operator=(const A & t) {cout<<11111111;}
     int data;
};
class B:public A{
public:
     B() {/*right,继承会自动在初始化列表前一项加上A的默认构造函数A(),所以即使没有显式调用也可以*/ 
         B::A::operator=(*this);/*right*/
         A* p=this;
         *p=A::operator=(*p);/*报错*/
         *p=*p;/*报错,A类赋值函数是protected的*/
     }
};
int main(void){
    B a;
    return 0;
}
平常能够运行都是因为我们用的是public,所以可以在类外访问这些函数,但是现在关心的问题是,赋值函数构造函数有没有被继承到B类中来,如果继承了跟其他函数一样即使是protected在派生类内也可以直接调用,但是现在很明显 不能调用 所以没有继承。
但是现在有一个问题是,如果执行父类那部分 会发现 仍然可以执行。 至于为什么,现在的我无能力回答。
经验分享 程序员 微信小程序 职场和发展