Can we declare an interface class by making all the methods abstract using the keyword ‘abstract’ in a class in C++?
我想知道通过这种方法在C++中定义接口类的方法。有可能吗?我不想知道关于接口的创建,但是想知道C++中的抽象关键字的用法。
- 在C++中没有关键字EDOCX1 0。如果您想要一个抽象类,这是一个不能初始化的类,只需要使用一个受保护的构造函数。
- 但有纯虚函数:= 0,abstract为c#
- @Bartekbanachewicz:不,抽象类是具有必须重写的纯虚拟函数的类,而不是具有受保护的构造函数的类。
- @Mikeseymour msdn:They are classes that cannot be instantiated, and are frequently either partially implemented, or not at all implemented.,wikipedia:an abstract type is a type in a nominative type system which cannot be instantiated directly. 。无论您是实现某种功能,还是从中派生,这都无关紧要。
- @ BartekBanachewicz:C++ 11:"如果一个类至少有一个纯虚函数,那么它是抽象的。"一个具有保护构造函数的类(并且没有纯虚函数)可以直接由它的成员、朋友和子类来实例化,所以即使是那些不准确的描述也不是抽象的。
- @米凯西莫尔,我笑得太多了,"可以由它的子类实例化"现在不同意。你说得对。
在C++中,接口定义如下:
1 2 3 4 5
| class Interface {
public:
virtual ~Interface();
virtual void aMethod() = 0;
}; |
注意虚拟析构函数。
在C++中,抽象类是具有至少1纯虚拟函数的任何类。
C++对接口没有直接的支持,但是可以通过使所有函数公开、虚拟和抽象来实现,并且在类中没有数据成员。