gpt4 book ai didi

c++ - 构造函数中的虚拟调用

转载 作者:行者123 更新时间:2023-11-28 02:14:02 27 4
gpt4 key购买 nike

<分区>

class A{
int i;
public:
A():i(0){cout<<" A : "<<i<<endl;}
A(int a);
virtual int val(){ return i+1; }

};

class B :public A{
int i;
public:
B():A(),i(0){cout<<" B : "<<i<<endl;}
B(int a):A(a),i(a) {
}

int val(){ return i;}
};

A::A(int a):i(a){
cout<<" A ; "<<i<<endl;
A* ap = new B;
cout<<" from A "<<ap->val()<<endl; ///expect 1 but got 0;
}

int main(){
A a(5);
}

我期望调用 ap->val() 的返回值为 1,因为我认为虚拟机制在构造函数中不起作用,但在这里我得到的值为 0,因为 ap->val() 导致调用 B::val()。为什么?

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