C++ 多态性C++;:将子对象按值传递给接受父对象的函数

C++ 多态性C++;:将子对象按值传递给接受父对象的函数,c++,oop,polymorphism,C++,Oop,Polymorphism,我通过值将子对象传递给接受父对象的函数。 我不希望工作,因为我认为涉及向上转换的多态性只适用于指针/引用 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;

我通过值将子对象传递给接受父对象的函数。 我不希望工作,因为我认为涉及向上转换的多态性只适用于指针/引用

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);
}
A类
{
公众:
int x;
A():x{5}{}
};
B类:公共A
{
公众:
int-y;
B():y{5}{x=10;}
};
空富(A)
{

cout虽然将
b
传递到
foo
将涉及,但这不会影响
foo
看到的
b.x
的值,因为该值是在构建对象时设置的。您只需将
b.y
切掉,这在编写的代码中没有任何效果