gpt4 book ai didi

c++ - 为什么在 C++ 中 'virtual' 和 '=0' 都需要描述一个方法是抽象的?

转载 作者:搜寻专家 更新时间:2023-10-31 00:56:35 25 4
gpt4 key购买 nike

正如The C++ programming language中所解释的那样:

virtual void push(char c) = 0;
virtual void pop() = 0;

virtual 这个词的意思是“以后可以在派生自这个类的类中重新定义”
=0 语法表示从 Stack 派生的某些类必须定义函数。

那么为什么需要 =0 符号呢?是不是派生类必须定义这个函数,也就是说没有=0的时候,有些派生类没有强制定义这个方法?

我对此感到困惑,需要一些帮助。

最佳答案

你的想法是对的。

So why =0 symbol is needed? Does it means that a child class must define this function, and that's to say when there is no =0, some child classes are not forced to define this method?

基本上你可以:

  • 使方法成为非虚拟的

这不允许从实现该方法的类(通过 publicprotected)派生的任何类更改该方法的行为。

  • 使方法虚拟

这允许(但不强制)任何派生自实现该方法(通过 publicprotected)的类来更改该方法的行为在基类中。您甚至不必再调用原始基类方法,因此您可以根据需要进行重大更改。

  • 制作一个方法纯虚拟(virtual = 0)

这强制从实现该方法的类(通过 publicprotected)派生的任何类为此方法实现某种行为/主体。如果派生类不提供实现,那么这个类将立即变成抽象本身。这允许省略基类中方法的行为/主体,因此不允许直接实例化具有一个或多个纯虚拟方法(抽象类)的类。

关于c++ - 为什么在 C++ 中 'virtual' 和 '=0' 都需要描述一个方法是抽象的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39288839/

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