【发布时间】:2021-08-28 06:17:14
【问题描述】:
我知道赋值运算符不会被派生类继承,相反,如果没有重新声明,编译器将创建一个默认值。但是我不明白为什么下面代码sn-p的输出是Base operator=:
#include <iostream>
using namespace std;
class B {
protected:
int h;
public:
B& operator=(const B& ob){
if (this!=&ob) {
h = ob.h;
cout << "Base operator=\n";
}
return *this;
}
};
class D: public B {
protected:
float r;
public:
};
int main() {
D a, b;
a = b;
return 0;
}
那不是说在调用a = b 时基址B& operator=(const B& ob 不就继承了吗?我哪里错了?
【问题讨论】:
标签: c++ inheritance operator-overloading