Afo*_*oto 9 c++ oop methods class
我现在正在学习C++,OO方面,我总是这样做:
class SomeClass{
virtual void aMethod()=0;
}
class AnotherClass{
void anotherMethod(){/*Empty*/}
}
class SomeClassSon : public SomeClass{
void aMethod(){/*Also Empty*/}
}
Run Code Online (Sandbox Code Playgroud)
我的疑问是:3种方法之间有什么区别.虚拟等于零,空虚,虚拟,因为它是继承的,空的.
为什么我不能像父亲一样制作SomeClassSon方法?(虚拟空白等于零?)
kir*_*off 12
为您
class SomeClass{
virtual void aMethod()=0;
}
Run Code Online (Sandbox Code Playgroud)
纯虚方法的存在使您的类抽象化.一旦你有一个这样的纯虚方法,=0在你的类中,你就无法实例化该类.更重要的是,任何派生类都必须实现纯虚拟aMethod(),或者它也成为抽象类.
在派生类中,您从上面覆盖纯虚方法,这使得派生类不是抽象的.您可以实例化此派生类.
但是,在派生类中,方法的主体是空的,对吗?这就是为什么你的问题有道理的原因:为什么不让这个类纯粹是虚拟的.那么,你的班级可能需要其他方法.如果是这样,SomeClass则无法实例化(有一个纯虚方法),而子类SomeClassSon可以.
同样适用于您AnotherClass,可以实例化,与之相反SomeClass.