class myClass * holding; VS myClass *持有;

时间:2014-06-10 21:09:42

标签: c++

我在正在阅读的代码中遇到了这个问题:

class myClass* holding;

这是否与以下相同:

myClass* holding;

谢谢, EK

2 个答案:

答案 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 的歧义(请参阅其他答案)