gpt4 book ai didi

c++ - 在 C++ 中重新定义一个非虚函数

转载 作者:可可西里 更新时间:2023-11-01 14:52:50 27 4
gpt4 key购买 nike

当我阅读 Effective C++ 时,它说,永远不要在 C++ 中重新定义非虚函数。

然而,当我测试它时,下面的代码编译正确。那么有什么意义呢?这是一个错误还是一个不好的做法?

class A {

public:
void f() { cout<<"a.f()"<<endl;};
};

class B: public A {
public:
void f() { cout<<"b.f()"<<endl;};
};


int main(){

B *b = new B();
b->f();
return 0;
}

最佳答案

只要您不依赖虚拟调度行为,重新定义非虚拟函数就可以。

这本书的作者担心你会将你的 B* 传递给一个接受 A* 的函数,然后当结果是一个调用时不高兴到基本方法,而不是派生方法。

关于c++ - 在 C++ 中重新定义一个非虚函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2124836/

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