如何使用构造函数初始化内存地址(指针变量)?
备注: 1)人是学生的基础班级 2)人员包含姓名作为唯一的数据变量 3)学生包含社会。该社团充当指向包含学生俱乐部名称的文本串的指针。如何使用构造函数初始化内存地址(指针变量)?
我理解第四行难度:
int main(){
Person* p1;
p1=new Student("John", "Drama Society"); //This line
delete p1;
}
是不是一个P1人指针指向的堆内存地址?据我所知,指针变量只是内存中的一个32位或64位(系统相关)位置。 它如何被初始化,就像Person类型的对象一样?
我知道我的观念是错误的,请帮我找出来:(
正在发生的事情是,在调用new
分配上的堆Student
对象,然后返回一个指向它,然后分配该指针p1
。所以p1
现在指向堆上的一个Student
对象。
new
后的构造函数的调用是多么的C++语法new
工程。该构造函数将被用来初始化堆上的对象。
谢谢!我现在明白了 – Yin
你在问多态。 你必须区分静态和动态类型。声明中指定了静态类型的指针。在这种情况下,p1的静态类型是Person。动态类型可以是静态类型的任何后代,并且可以在运行时定义,在您的示例中为Student。
你可以在这里找到一个很好的解释:https://stackoverflow.com/a/7649711/8244162
谢谢您的信息! – Yin
新的结果是一个指针。指向人的指针可以用指向学生的指针来初始化。你的问题是什么? – Yunnosch