在C++中为什么纯函数必须是虚函数?

and*_*312 -4 c++ virtual class function

我在google和这里搜索过但我无法理解为什么类中的纯函数必须是虚函数.我理解也许将"正常功能"称为纯粹是不是很有用,但我认为这不是废话.我的意思是,"纯粹"这个词只是为了宣布一个抽象类.好吧,我不能将多态性与纯正常函数一起使用,但无论如何都要达到主要原因(将类声明为抽象).我错了吗?

use*_*ica 5

不要求纯函数是虚拟的.如果您正在考虑"纯虚函数"一词,那么"纯"适用于"虚拟"; 该功能纯粹是虚拟的.这是"纯粹"一词的另一种用法.

我的意思是,"纯粹"这个词只是为了宣布一个抽象类.

不是.声明纯虚函数的原因不是要阻止封闭类的实例化; 它是为了确保具体的子类实现该方法,通常是因为抽象类无法提供合理的实现.

好吧,我不能将多态性与纯正常函数一起使用,但无论如何都要达到主要原因(将类声明为抽象).

如果您正在寻找一种在没有任何纯虚函数的情况下声明类抽象的方法,那么C++没有专门的语法.我看到的建议是声明和实现一个纯虚拟析构函数(你可以这样做),或者使构造函数受到保护(但是使构造函数受到保护不会使你的类通过std::is_abstract).在任何情况下,将语法附加到任意成员函数都没有多大意义; 类似的东西class Foo = 0 { ... };会更有意义.

  • 我认为,如果人们用他们的语法名称来称呼它们,那么这可能会更加混乱.它们是_purely virtual_ functions. (6认同)