我来自java,所以请多多包涵。我已经阅读了其他几篇文章,但似乎无法找到答案。
我有一个基类(Obj)头文件,如下所示。
class Obj {
public:
Obj();
Obj(int);
int testInt;
virtual bool worked();
Obj & operator = (const Obj & other) {
if(this != &other) {
//other.testInt = this->testInt;
return *this;
}
}
};
基类
Obj::Obj() {
}
Obj::Obj(int test) {
this->testInt = test;
}
bool Obj::worked() {
return false;
}
这是子类标题
class Obj1 : public Obj {
public:
Obj1();
Obj1(int);
virtual bool worked();
};
儿童班
#include "Obj1.h"
Obj1::Obj1() {
}
Obj1::Obj1(int a) {
this->testInt = a / 2;
}
bool Obj1::worked() {
return true;
}
这是我的主要课程
int main() {
Obj obj = Obj(99);
Obj1 obj1 = Obj1(45);
obj = obj1;
if(obj.worked())
cout << "good" << obj.testInt << endl;
else cout << "bad " << obj.testInt << endl;
if(obj1.worked()) {
cout << "1good " << obj1.testInt << endl;
} else
cout << "1bad " << obj1.testInt << endl;
return 0;
}
这是运行时的输出
bad 99
1good 22
我怎么得到它所以obj = obj1; (在上面的 main 中找到)使得 obj.worked() 将返回 true(因为这就是 obj1 的类定义它的方式)?基本上我如何让它表现得像在java中一样?我不需要深拷贝,我只想扔掉 obj 曾经引用的内容并让它指向 obj1(我认为这就是它在 java 中的工作方式)。