我在正在阅读的代码中遇到了这个问题:
class myClass* holding;
这是否与以下相同:
myClass* holding;
谢谢, EK
答案 0 :(得分:2)
如果此时myClass
被称为有效的类名(即之前已声明),则是,两个声明都是等效的。应该注意的是,类名可以隐藏,例如,变量名,在这种情况下,使用精心设计的版本class myClass
将允许您解决隐藏问题,并确保您引用类名具体来说,如下例所示
class C {};
int main() {
int C;
C a; // <- invalid
class C b; // <- OK
}
如果此时名称myClass
未知,则第二个版本只是不会编译。第一个版本将编译并将引入class myClass
的前瞻声明(参见LihO的回答)
答案 1 :(得分:0)
class myClass* holding;
相当于:
class myClass; // letting compiler know that there is type myClass
myClass* holding;
除非您使用class
关键字来解决myClass
的歧义(请参阅其他答案)。