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