【发布时间】:2025-12-13 00:10:01
【问题描述】:
我想知道当您正在操作的对象存储在类中(而不是作为指针或引用类型)时,C++ 中的多态性如何工作。
我读过多态性只对指针和引用起作用,但是我重载了
在我的实现中测试这个示例时,我发现它没有按预期工作,并且将返回基类字符串(“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();
}
【问题讨论】:
-
重复:*.com/questions/4403726/… - 这称为“切片”,与
object_是类成员无关。 -
这就是我要找的词,干杯
标签: c++ class polymorphism virtual