Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用构造函数初始化内存地址(指针变量)?_C++ - Fatal编程技术网

C++ 如何使用构造函数初始化内存地址(指针变量)?

C++ 如何使用构造函数初始化内存地址(指针变量)?,c++,C++,注:1)人是学生的基本班级 2) Person包含name作为唯一的数据变量 3) 学生包容社会。社团充当指向包含学生俱乐部名称的文本字符串的指针 我很难理解第四行: int main (){ Person* p1; p1=new Student("John", "Drama Society"); //This line delete p1; } p1不是指向堆中内存地址的Person指针吗?据我所知,指针变量只是内存中的一个32位或64位(取决于系统)位置。 它如何像Person类型的对

注:1)人是学生的基本班级 2) Person包含name作为唯一的数据变量 3) 学生包容社会。社团充当指向包含学生俱乐部名称的文本字符串的指针

我很难理解第四行:

int main (){
Person* p1;
p1=new Student("John", "Drama Society");   //This line
delete p1;
}
p1不是指向堆中内存地址的Person指针吗?据我所知,指针变量只是内存中的一个32位或64位(取决于系统)位置。 它如何像Person类型的对象一样初始化


我知道我的概念是错误的,请帮我找出它们:(

发生的是对
new
的调用在堆上分配了一个
Student
对象,然后返回一个指向该对象的指针。然后你将该指针分配给
p1
。因此
p1
现在指向堆上的
Student
对象


<> >构造函数调用<代码>新< /C> > C++代码> C++ >新< /COD>。该构造函数将用于初始化堆上的对象。

< p>您询问多态性。 您必须区分静态类型和动态类型。指针的静态类型是在声明时指定的。在这种情况下,p1的静态类型是Person。动态类型可以是静态类型的任何后代,并且可以在运行时定义,在示例中是Student


你可以在这里找到一个很好的解释:

新的结果是一个指针。指向人的指针可以用指向学生的指针初始化。你的问题是什么?谢谢!我现在明白了