我在学校进行了一次测验,有一个问题我不确定我是否回答正确。我在书上找不到答案所以我想问你。
Point* array[10];
调用上述代码时,创建了多少个 Point 类实例?
我回答没有,因为它只为 10 个实例创建空间,但不会创建任何实例。然后我的朋友说这只是一个,因为当编译器看到 Point* 时,它只是创建一个实例作为基础。
它不会创建
Point
。
它的作用是创建一个由十个指针组成的数组,这些指针可以指向
Point
对象(它不会为十个实例创建空间)。 不过,数组中的指针尚未初始化,并且实际上没有创建 Point
对象。
你几乎是正确的。
该代码没有创建
Point
的实例。 不过,它确实创建了 10 个 Point *
实例。 它不为Point
实例创建空间;例如,这是通过调用
new
来完成的。
Point* array[10]
创建一个包含十个指针槽的数组,编号为 0..9.
你们都错了——在 C++ 中,这样的语句不会进行初始化,除非
绝对不会创建任何实例。
谨不同意斯特拉格的观点,不存在 Point* 的“实例”这样的东西,并且认为存在这样的东西是危险的。只有指针和编译时检查的空间,以确保您只能将该类型的指针或指向子类的指针分配给该指针。
如果
Point*
是全局的,则
array
中的 array
对象初始化为零。