gpt4 book ai didi

C++:虚拟方法

转载 作者:搜寻专家 更新时间:2023-10-31 01:48:47 24 4
gpt4 key购买 nike

<分区>

我有以下代码(省略了 #includeusing namespace std):

class A {
public:
void call(){callme();}
private:
virtual void callme() {cout << "I'm A" << endl;}
};

class B : public A {
private:
virtual void callme() {cout << "I'm B" << endl;}
};

class C : public B {
public:
virtual void callme(){ cout << "I'm C" << endl;}
};

int main(){
vector<A> stuff = {
A(), B(), C(),
};
stuff[0].call(); // output: I'm A
stuff[1].call(); // output: I'm A
stuff[2].call(); // output: I'm A
return 0;
}

如评论中所述,上述程序的输出为:

I'm A
I'm A
I'm A

但是,我希望 C++ 能够自动识别创建相应元素的类型。 IE。我想要 C++ 输出

I'm A
I'm B
I'm C

(也就是说,编译器应该为我选择合适的子类。)

在这种情况下这可能吗(即如果所有元素都来自 vector)?

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