我在学校进行了一次测验,有一个问题,我不确定我是否正确回答。我在书中找不到答案所以我只是想问你。
Point* array[10];
调用上面的代码时会创建多少个Point类实例?
我没有回答任何问题,因为它只为10个实例创建了空间,但没有创建任何实例。然后我的朋友说这只是一个因为当编译器看到Point *时它只是创建一个实例作为基础。
答案 0 :(得分:14)
它不会创建Point
。
它的作用是创建一个包含十个指针的数组,这些指针可以指向Point
个对象(它不会为十个实例创建空间)。但是,数组中的指针是未初始化的,并且实际上没有创建Point
个对象。
答案 1 :(得分:4)
你几乎是正确的。
代码不会创建Point
的实例。但它确实创建了10个Point *
个实例。它不为Point
实例创建空间;例如,使用对new
的调用来完成。
答案 2 :(得分:2)
Point* array[10]
创建一个包含十个指针槽的数组,编号为0..9。
你错了 - 除非
,否则在C ++中没有初始化发生这样的声明绝对没有创建实例。
恭敬地反对strager的观点,没有Point *的实例这样的东西,想到存在这样的事情会很危险。指针和编译时检查只有空间,以确保只能将该类型的指针或指向子类的指针分配给该指针。
答案 3 :(得分:1)
没有使用这样的语句在C ++中进行初始化
如果Point*
是全局的,array
中的array
个对象将被初始化为零。