class 类前向声明

/*
  使用前向引用声明虽然可以解决一些问题,但它并不是万能的。需要注意的是,
  尽管使用了前向引用声明,但是在提供一个完整的类声明之前,不能声明该类的对象,
  也不能在内联成员函数中使用该类的对象。请看下面的程序段:
  */
   
  //第一种
  #include<iostream>
  class Fred; //前向引用声明
  class Barney {
  Fred x; //错误:类Fred的声明尚不完善
  };
  class Fred {
  Barney y;
  };
   
   
  //第二种
  class Fred; //前向引用声明
   
  class Barney {
  public:
  void method()
  {
  x->yabbaDabbaDo(); //错误:Fred类的对象在定义之前被使用
  }
  private:
  Fred* x; //正确,经过前向引用声明,可以声明Fred类的对象指针
  };
   
  class Fred {
  public:
  void yabbaDabbaDo();
  private:
  Barney* y;
  };
   
  /*
  总结:当使用前向引用声明时,只能使用被声明的符号,而不能涉及类的任何细节。
  */
posted @ 2020-04-27 10:52  糖糖_彭  阅读(617)  评论(0编辑  收藏  举报