对象切片-维基百科示例

问题描述 投票:-2回答:1

这里是从Wikipedia页面(https://en.wikipedia.org/wiki/Object_slicing)进行对象切片的示例。是否可以逐行解释代码? (就像这个答案https://stackoverflow.com/a/18103471/6359659


struct A
{
    A(int a) : a_var(a) {}
    int a_var;
};

struct B : public A
{
    B(int a, int b) : A(a), b_var(b) {}
    int b_var;
};

B &getB()
{
    static B b(1, 2);
    return b;
}

int main()
{
    // Normal assignment by value to a
    A a(3);
    //a.a_var ==3
    a = getB();
    // a.a_var == 1, b.b_var not copied to a

    B b2(3, 4);
    //b2.a_var==3 ,b2.b_var==4
    A &a2 = b2;
    // Partial assignment by value through reference to b2
    a2 = getB();
    // b2.a_var == 1, b2.b_var == 4!

    return 0;
}


c++
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.