gpt4 book ai didi

c++ - 关于虚函数的问题

转载 作者:可可西里 更新时间:2023-11-01 18:25:58 28 4
gpt4 key购买 nike

我有两个类:

class x {
public:
virtual void hello() {
std::cout << "x" << std::endl;
}
};

class y : public x {
public:
void hello() {
std::cout << "y" << std::endl;
}
};

有人可以解释为什么以下两次调用 hello() 打印不同的消息吗?为什么他们不都打印“y”?是不是因为第一个是拷贝,第二个实际指向的是内存中的对象?

int main() {
y a;

x b = a;
b.hello(); // prints x

x* c = &a;
c->hello(); // prints y
return 0;
}

最佳答案

是的,你是对的

x b = a;

调用复制构造函数(b 是一个 'x')

x& b = a;

分配一个引用并将使用覆盖(b 实际上仍然是一个 'y')

关于c++ - 关于虚函数的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4825685/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com