我一直试图理解一段代码如下:
class A {
// some class definition
}
class B {
public:
virtual A *someMethod();
virtual class A *someOtherMethod();
}
Run Code Online (Sandbox Code Playgroud)
我似乎无法理解上的差异(或者如果存在,对于这个问题)之间someMethod和someOtherMethod-都似乎是虚拟的方法和两者都在课堂上重写,从继承B.
有人会对这个虚拟类语法有所了解吗?
A是类名,class A是精心设计的类型说明符.如果没有其他任何调用A,则两者都引用被调用的类A.
如果有其他东西(可能是一个函数或变量)被调用A,那么不合格的使用A会引用它.你需要精心设计的说明符class A来引用这个类.正如评论中所提到的,您也可以在class A没有此类声明的情况下使用; 使用详细说明符足以将类名引入最里面的命名空间.
它与虚函数语法几乎没有关系; 两种形式都可用于指定类型,无论是作为函数的返回类型还是在任何其他上下文中.