每次我向抽象类添加一个非具体的虚拟方法时,编译器都会在从抽象类派生的所有类上给出无用的错误invalid new-expression of abstract class type '...',然后我需要执行git diff来搜索前面添加的新方法,或者查找GCC错误中的注释。(添加方法和编译可能有天的区别)
我是否可以在C++中指定一个类必须是具体的(如果它没有告诉原因/丢失-方法)?
发布于 2018-02-21 10:07:48
回答眼前的问题:
我是否可以在C++中指定一个类必须是具体的(如果它没有告诉原因/丢失-方法)?
C++没有显式的抽象类或具体类。这些概念在语言中是隐含的。抽象是指一个或多个纯虚拟成员函数的存在(无论是在类本身中还是在继承中),而具体的是缺少这些函数。
这正是C++标准定义抽象类的方式(§13.4/2)
class.abstract 抽象类是只能用作其他类的基类的类;抽象类的对象只能作为派生的类的子对象创建。类是抽象的,如果它至少有一个纯虚函数。
例如,在abstract中没有关键字,比如Java的C++。
编译器错误消息是可以捕获错误的标准位置,例如尝试实例化仍然具有纯虚拟成员函数的类。
https://stackoverflow.com/questions/48902408
复制相似问题