我想知道当您正在操作的对象存储在类中(而不是作为指针或引用类型)时,C++ 中的多态性如何工作。
我读过多态性只适用于指针和引用,但是我重载了 << 运算符,它将接受对 A 的引用。
在我的实现中测试这个示例时,我发现它没有按预期工作,并且将返回基类字符串(“A”)而不是“B”。
这是因为对象存储在类本身内部吗?并且 << 运算符接受引用与多态性的工作无关?(即,因为它的核心对象存储在类中,除非我将它作为指针/引用存储在类中,否则它将不起作用)谢谢
class Test {
public:
void Run() {
object_ = B();
std::cout << object_ << std::endl;
}
private:
A object_;
};
Class A {
// Assume this is already implemented. All it does it add obj.getType()
// to stream
friend ostream& operator<<(ostream& stream, A obj);
public:
virtual std::string getType() {
return std::string("A");
}
};
Class B : public A {
public:
std::string getType() {
return std::string("B");
}
};
int main(int argc, char* argv[]) {
Test test = Test();
test.Run();
}