C++类中不能定义自身类类型成员变量
类声明:
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++类中不能定义自身类类型成员变量相关推荐
- Java练习题 类 先创建一个Point类,然后定义Trianglele类。在Trianglele类中定义三个Point的实体来表示一个三角形的三个点,然后定义两个方法求三角形的周长、面积。
先创建一个Point类,然后定义Trianglele类. 在Trianglele类中定义三个Point的实体来表示一个三角形的三个点,再定义构造方法对这三个点进行初始化,然后定义两个方法求三角形的周长 ...
- java中构造方法只能有一个_对Java中类的构造方法描述正确的是()A.如果在类中没有定义,Java就提供一个默认的构造方法B.只能...
对Java中类的构造方法描述正确的是()A.如果在类中没有定义,Java就提供一个默认的构造方法B.只能 更多相关问题 猛虎噬人卣是_______时期的陶塑代表作品. 静态网页是指网页的内容是固定的, ...
- java定义一个点_JAVA 定义一个Point类 它的对象是指一个平面上的点(x,y),在定义Point类中要定义它的三个构造函数...
JAVA 定义一个Point类 它的对象是指一个平面上的点(x,y),在定义Point类中要定义它的三个构造函数 JAVA 定义一个Point类 它的对象是指一个平面上的点(x,y),在定义Point ...
- abstract类中不可以有private的成员_别再说你不懂java面向对象了,阿里P7大佬一次性给你讲的明明白白
前言 面向对象在百度百科中是这样解释的:"面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物".说的好像很流弊的样子,看看就行. 包的认识 1.1:包 ...
- scala 类中的对象是类_Scala中的类和对象
scala 类中的对象是类 Scala中的课程 (Classes in Scala) A class is a blueprint for objects. It contains the defin ...
- scala 类中的对象是类_Scala类和对象– Singleton对象,伴侣类
scala 类中的对象是类 Earlier we learned about Scala Programming Language and it's installation on Windows a ...
- php引入类的位置,php如何在一个类中引入另外一个类
有时候需要在一个类中调用另外一个类里面的方法,然后另外一个类又需要调用当前类的方法,怎么办呢?下面是具体的介绍.希望对大家有用,更多内容请关注应届毕业生网! 可以直接引入类对象的方式调用另外一个类的方 ...
- java怎么调用另一个类的方法_在一个类中访问另一个类的方法
在一个类中访问另一个类的方法 由于Java应用程序是由若干个类构成的,因此经常需要在一个类中访问另一个类中的成员和方法,请问应该如何在一个类中访问另一个类的方法?下面是由百分网小编为大家整理的在一个类 ...
- 定义一个名为Circle的类,其中含有double型的成员变量centerX 和centerY表示圆心坐标,radius表示圆的半径。
定义一个名为Circle的类,其中含有double型的成员变量centerX 和centerY表示圆心坐标,radius表示圆的半径. 定义求圆的面积方法getArea()方法和求圆周长的方法getP ...
最新文章
- python requests 重定向_认识Python最最最常用语重要的库Requests
- Install GIT in Ubuntu
- 【算法】动图展示八大常用排序算法,一次看个够!
- python工作环境_CentOS7下python工作环境管理
- 如何使用三态工作流 - [MOSS 2007应用日记]
- python中setup函数的用法_python学习之setUp函数和tearDown函数
- python全局变量global线程安全_对python多线程与global变量详解
- python安装要什么配置_Python的安装和详细配置
- SQLServer通过链接服务器调用Oracle 存储过程
- 此 Windows 副本不是正版的解决方案
- centOS 自动锁屏 解决办法
- 人工智能这把双刃剑的利指的是什么?
- 指纹机和计算机无法连接,考勤机怎么连接到电脑?考勤机连接电脑之后操作指南!...
- 非线性微分方程的线性化
- 【吐血整理】那些让你起飞的计算机基础知识:学什么,怎么学?
- 魔方机器人-复原步骤(一)
- 解决android api30以上,调用华为P50相机,点击拍照无反应问题
- CSS calc()函数
- 中国蚁剑下载时,出现“无法成功完成操作,文件包含病毒或潜在的垃圾软件”报错的解决方案
- Linux系统日志查询