首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >让编译器告诉哪些方法不是具体的,而不是错误的‘无效的抽象类类型的新表达式’。

让编译器告诉哪些方法不是具体的,而不是错误的‘无效的抽象类类型的新表达式’。
EN

Stack Overflow用户
提问于 2018-02-21 09:33:03
回答 1查看 74关注 0票数 0

每次我向抽象类添加一个非具体的虚拟方法时,编译器都会在从抽象类派生的所有类上给出无用的错误invalid new-expression of abstract class type '...',然后我需要执行git diff来搜索前面添加的新方法,或者查找GCC错误中的注释。(添加方法和编译可能有天的区别)

我是否可以在C++中指定一个类必须是具体的(如果它没有告诉原因/丢失-方法)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-21 10:07:48

回答眼前的问题:

我是否可以在C++中指定一个类必须是具体的(如果它没有告诉原因/丢失-方法)?

C++没有显式的抽象类或具体类。这些概念在语言中是隐含的。抽象是指一个或多个纯虚拟成员函数的存在(无论是在类本身中还是在继承中),而具体的是缺少这些函数。

这正是C++标准定义抽象类的方式(§13.4/2)

class.abstract 抽象类是只能用作其他类的基类的类;抽象类的对象只能作为派生的类的子对象创建。类是抽象的,如果它至少有一个纯虚函数

例如,在abstract中没有关键字,比如Java的C++。

编译器错误消息是可以捕获错误的标准位置,例如尝试实例化仍然具有纯虚拟成员函数的类。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48902408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档