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在派生类内也可以直接调用,但是现在很明显 不能调用 所以没有继承。
但是现在有一个问题是,如果执行父类那部分 会发现 仍然可以执行。 至于为什么,现在的我无能力回答。