2017-07-23 75 views
-1

请考虑下面这个例子:为什么在C++中允许将类对象指向成员变量,但不允许类对象本身?

#include <bits/stdc++.h> 
using namespace std; 

class Example{ 

    private: 
     int var1; 
     Example *oak; 
}; 

是好的,但不是这个

#include <bits/stdc++.h> 
using namespace std; 

class Example{ 
    private: 
     int var1; 
     Example oak; 
}; 

为什么有一个指向同一类对象作为成员变量是好的,但不是类对象本身作为一个成员变量?

你可以给我一些实际的情况,有一个类对象作为成员变量是有用的吗?

+0

第二种类型的尺寸是多少?在C++中,每种类型都有一个大小。一个int可能是4个字节,一个指针也可能是4个字节。在第二个例子中,'Example'的大小必须是'sizeof(Example)= 4 + sizeof(Example)'。这是一个没有解决方案的方程式。在第一个例子中,你有'sizeof(Example)= 4 + sizeof(Example *)= 4 + 4 = 8'(作为一些目标的例子) – Justin

+2

你不能存储一架(相同型号的)飞机一架飞机的货舱......但你可以存储一张纸条,说明在哪里可以找到另一架飞机 –

回答

0

你会有一个无限的对象定义循环。你如何看待你将停止定义橡木实例?

您需要明确地创建指针,以便您可以控制创建。

+0

你能说出为什么这个指针能够反射物体本身吗? –

0

好吧,你是正确的一个类不能拥有自己的对象,因为如果我们这样做,编译器将无法计算对象的大小,因为它将在无限循环中进行。 例如: 我在main()对象中初始化一个对象将包含另一个对象,而另一个对象将包含另一个对象,并且编译器将无法计算大小。但是,正如我们所知的,指针具有固定的大小,它指向一个int char或一个对象,因此编译器将能够计算其大小。

相关问题