![](/img/trans.png)
[英]C++ Polymorphism error - Not allowing me to create child object from parent type
[英]Polymorphism C++: Passing child object by value to function that accepts parent object
我将一个子 object 按值传递给一个接受父 object 的 function。 我没想到会工作,因为我认为涉及向上转换的多态性仅适用于指针/引用。
class A
{
public:
int x;
A() :x{ 5 } {}
};
class B : public A
{
public:
int y;
B() :y{ 5 } { x = 10; }
};
void foo(A a)
{
cout << a.x << endl;
}
int main()
{
A a;
B b;
// it works to send b to foo
// foo will print value 10
foo(b);
}
似乎 foo 将打印值 10,即来自子 class 的 x 值。 有人可以帮我理解发生了什么吗?
虽然将b
传递给foo
将涉及object 切片,但这不会影响foo
看到的bx
的值,因为它是在构建 object 时设置的。 您只是被 切掉by
,这对编写的代码没有影响。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.