per*_*eal 10
如果你这样定义,你可以拥有你想要的东西:
class A {
public:
virtual void pure_virtual(int param1) = 0;
virtual ~A() { };
};
Run Code Online (Sandbox Code Playgroud)
编辑:谢谢尼古拉和迈克!
Java接口最好翻译为C++抽象类.在Java中(据我所知),接口只是抽象类的一个子集,除了它允许C++在所有情况下都具有的"多重继承".
class thing_interface {
public:
virtual ~thing_interface() {}
virtual void foo() =0; //pure virtual function
};
class other_interface {
public:
virtual ~other_interface () {}
virtual void bar() =0; //pure virtual function
};
class thing_impl : public thing_interface, public other_interface {
protected:
int member;
public:
thing_impl() : member(0) {}
virtual ~thing_impl() {};
virtual void foo() { std::cout << "FOO!\n";}
virtual void bar() { std::cout << "BAR!\n";}
};
Run Code Online (Sandbox Code Playgroud)
该=0
语法意味着它没有在接口中定义,但必须在符合接口类定义.另请注意,如果您有任何虚函数,那么您几乎总是需要虚拟析构函数.如果你试图单独创建一个C++,C++会告诉你一个错误thing_interface
,因为没有实现函数.
这不是一个障碍,因为我无法想象Java可以做的任何东西,C++不能.
归档时间: |
|
查看次数: |
510 次 |
最近记录: |