只有static成员变量,指针或者引用,才可以在一个类的定义体内,用本类作为数据类型,如:
class Bar
{
public:
......
private:
static Bar member1; //OK
Bar* member2; //OK
Bar& member3; //OK
Bar member4; //ERROR "使用正在定义的Bar"
};
注意:如果Bar中有个成员函数的参数的数据类型是Bar,则是可以的。如:
class Book
{
public:
Book(const string& book_name) : author("Stanley B. Lippman")
{
this->book_name = book_name;
}
bool same_author(const Book book) const;
private:
string book_name;
string author;
};
加了static在前面,就仅仅是声明一个X类型的变量,而不是定义一个X类型的变量,声明由于不需要内存开销,因此也就不需要构造对象。
后面两个的原因,和上面的类似。
X * p1;
X & A2;
最后一个
X x;
必然会失败,这是定义了一个X类型的成员变量,因此要嗲用X的构造函数,而X在这句话要执行的时候,X这个类自身还没有定义完整,所以必然会出错。
分享到:
相关推荐
实验11 用户定义数据类型与自定义函数,三级考试可以参考一下!!!!!
VC++编程时有很多类型的数据需定义,在此提供较全的定义符,方便大家编程。
本章主要介绍线性表的定义和抽象数据类型,线性表的顺序存储结构以及每种线性表操作在顺序存储结构上的具体实现,链接存储的概念,线性表的链接存储结构以及每种线性表操作在链接存储结构上的具体实现等内容。
数据类型就是对内存位置的抽象表达。...另一方面,Java的虚拟机负责定义其内置数据类型的各方面内容。这就意味着不管Java虚拟机(JVM)运行在何等低级的操作系统之上,数据类型的属性都是完全一样的。
西门子TIA博图数据块中数据类型的定义pdf,西门子TIA博图数据块中数据类型的定义
java原始数据类型的包装类 java系统自定义原始封装类
该代码实现了抽象数据类型树的各个基本操作,包括遍历等
ECMAScript 中有 5 种简单数据类型(也称为基本数据类型):Undefined、Null、Boolean、Number和 String。...但是,由于 ECMAScript 数据类型具有动态性,因此的确没有再定义其他数据类型的必要了。
IBM_Informix用户定义的例程与数据类型开发者指南
Oracle 表定义到 DB2 数据类型
修复8字节数据类型,为数组时的BUG..测试通过,未实际使用到项目中...有问题在帖子里回复...注:自定义数据类型文本 必须跟 当前的数据类型一致,否则崩溃没商量...工作原理是根据 自定义数据...Tags:易语言定义数据类型。
Access数据类型转换[定义].pdf
组态王的数据类型,详细的介绍,内存离散变量、I/O离散变量、2.内存实型变量、I/O实型变量
数据类型是数据的一种属性,表示数据所表示...任何一种计算机语言都定义了自己的数据类型。当然,不同的程序语言都具有不同的特点,所定义的数据类型的各类和名称都或多或少有些不同。SQLServer提供了25种数据类型:
易语言自定义数据类型数组排序源码,自定义数据类型数组排序,更新超级列表框,取随机品名,根据产地排序,根据类别排序,根据售价排序
reg51头文件定义的扩展数据类型1
【实验目的】:了解C#数据类型的分类与特征;掌握C#变量的定义与使用; 数据类型与变量
Linux下定义Windows常用数据类型.docx
1)Father类为外部类,类中定义一个私有的String类型的属性name,name的值为“zhangjun”。 2)Child类为Father类的内部类,其中定义一个introFather()方法,方法中调用Father类的name属性。 3)定义一个测试类Test...