类声明: 
class dog; //类的声明

类定义: 
class dog{ //类的定义

};

当用实例化一个类的对象时,编译器会根据类的定义来分配相应的存储空间 。

也就是说,在创建对象前,一定要有完整的类定义,这样编译器才能正确的计算所需空间。 
那么我们来看如下代码:

class dog{ 
dog tt; //error, ‘tt’ uses undefined class ‘dog’

};

上述代码中,由于dog还没有定义结束,在内部定义一个dog类型的对象时,编译器无法知道应该为tt分配多少内存空间,因此会报注释中的错误。

我们再看下面一段代码:

class dog{ 
dog *Zhlu; //ok 
dog& SKII; //ok 
};

在类定义时,定义指向自身类型的指针或引用作为内部成员没有问题,由于指针和引用所占存储空间大小与类型无关,所以编译器可以计算所需分配空间,所以正确。

这个跟链表定义一样,

typedef struct LNode{
    ElemType data;
    struct LNode *next;
}LNode,*LinkList;
尽管链表节点类型还没有定义结束,但是编译器无需知道*next类型。
————————————————
版权声明:本文为CSDN博主「ayoung_go」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/laoqiuge/article/details/82021789

C++类中不能定义自身类类型成员变量相关推荐

  1. Java练习题 类 先创建一个Point类,然后定义Trianglele类。在Trianglele类中定义三个Point的实体来表示一个三角形的三个点,然后定义两个方法求三角形的周长、面积。

    先创建一个Point类,然后定义Trianglele类. 在Trianglele类中定义三个Point的实体来表示一个三角形的三个点,再定义构造方法对这三个点进行初始化,然后定义两个方法求三角形的周长 ...

  2. java中构造方法只能有一个_对Java中类的构造方法描述正确的是()A.如果在类中没有定义,Java就提供一个默认的构造方法B.只能...

    对Java中类的构造方法描述正确的是()A.如果在类中没有定义,Java就提供一个默认的构造方法B.只能 更多相关问题 猛虎噬人卣是_______时期的陶塑代表作品. 静态网页是指网页的内容是固定的, ...

  3. java定义一个点_JAVA 定义一个Point类 它的对象是指一个平面上的点(x,y),在定义Point类中要定义它的三个构造函数...

    JAVA 定义一个Point类 它的对象是指一个平面上的点(x,y),在定义Point类中要定义它的三个构造函数 JAVA 定义一个Point类 它的对象是指一个平面上的点(x,y),在定义Point ...

  4. abstract类中不可以有private的成员_别再说你不懂java面向对象了,阿里P7大佬一次性给你讲的明明白白

    前言 面向对象在百度百科中是这样解释的:"面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物".说的好像很流弊的样子,看看就行. 包的认识 1.1:包 ...

  5. scala 类中的对象是类_Scala中的类和对象

    scala 类中的对象是类 Scala中的课程 (Classes in Scala) A class is a blueprint for objects. It contains the defin ...

  6. scala 类中的对象是类_Scala类和对象– Singleton对象,伴侣类

    scala 类中的对象是类 Earlier we learned about Scala Programming Language and it's installation on Windows a ...

  7. php引入类的位置,php如何在一个类中引入另外一个类

    有时候需要在一个类中调用另外一个类里面的方法,然后另外一个类又需要调用当前类的方法,怎么办呢?下面是具体的介绍.希望对大家有用,更多内容请关注应届毕业生网! 可以直接引入类对象的方式调用另外一个类的方 ...

  8. java怎么调用另一个类的方法_在一个类中访问另一个类的方法

    在一个类中访问另一个类的方法 由于Java应用程序是由若干个类构成的,因此经常需要在一个类中访问另一个类中的成员和方法,请问应该如何在一个类中访问另一个类的方法?下面是由百分网小编为大家整理的在一个类 ...

  9. 定义一个名为Circle的类,其中含有double型的成员变量centerX 和centerY表示圆心坐标,radius表示圆的半径。

    定义一个名为Circle的类,其中含有double型的成员变量centerX 和centerY表示圆心坐标,radius表示圆的半径. 定义求圆的面积方法getArea()方法和求圆周长的方法getP ...

最新文章

  1. python requests 重定向_认识Python最最最常用语重要的库Requests
  2. Install GIT in Ubuntu
  3. 【算法】动图展示八大常用排序算法,一次看个够!
  4. python工作环境_CentOS7下python工作环境管理
  5. 如何使用三态工作流 - [MOSS 2007应用日记]
  6. python中setup函数的用法_python学习之setUp函数和tearDown函数
  7. python全局变量global线程安全_对python多线程与global变量详解
  8. python安装要什么配置_Python的安装和详细配置
  9. SQLServer通过链接服务器调用Oracle 存储过程
  10. 此 Windows 副本不是正版的解决方案
  11. centOS 自动锁屏 解决办法
  12. 人工智能这把双刃剑的利指的是什么?
  13. 指纹机和计算机无法连接,考勤机怎么连接到电脑?考勤机连接电脑之后操作指南!...
  14. 非线性微分方程的线性化
  15. 【吐血整理】那些让你起飞的计算机基础知识:学什么,怎么学?
  16. 魔方机器人-复原步骤(一)
  17. 解决android api30以上,调用华为P50相机,点击拍照无反应问题
  18. CSS calc()函数
  19. 中国蚁剑下载时,出现“无法成功完成操作,文件包含病毒或潜在的垃圾软件”报错的解决方案
  20. Linux系统日志查询

热门文章

  1. 诗歌rails 之with_options
  2. ss.exe 命令参数应用
  3. Day11多态部分-5
  4. 内网渗透-域内信息收集
  5. 【数据结构与算法】之深入解析“丑数II”的求解思路与算法示例
  6. 牛人的博客(机器学习,图像处理,计算机视觉)
  7. 手把手教你搭建Hadoop生态系统伪分布式集群
  8. 视觉盛宴 HTML5 3D动画应用赏析
  9. 百练2811:熄灯问题
  10. 【Qt】2D绘图之绘制简单的图形