如何使用构造函数初始化内存地址(指针变量)?
How can a memory address (pointer variables) be initialized using constructor?
注: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
之后的构造函数调用就是new
的C++语法的工作方式。 该构造函数将用于初始化堆上的对象。
你问的是多态性。 您必须区分静态类型和动态类型。指针的静态类型在声明中指定。在本例中,p1 的静态类型为 Person。动态类型可以是静态类型的任何后代,并且可以在运行时定义,在您的示例中为 Student。
你可以在这里找到一个很好的解释:https://stackoverflow.com/a/7649711/8244162
相关文章:
- 指针变量在 cout 函数中不起作用
- 如何将指针变量作为引用参数传递?
- 有没有办法在同名类 (c++) 中为对象分配一个指针变量
- 我试图了解在异或操作后指针变量正在更改
- 调用带有指针对象错误的指针变量
- 如何在 cuda 中将结构的指针变量从主机复制到设备
- 非指针变量和类成员上的新放置
- 线路抑制状态错误 C4703 可能未初始化的局部指针变量"back"已使用
- 全局外部指针变量在 DLL 中不可见
- 如何访问在 c++ 中在类内声明的结构类型指针变量?
- C++ 中指针变量的内存释放
- 使用指针变量打印特定的数组变量
- 如何使用构造函数初始化内存地址(指针变量)?
- 如何释放为指针变量本身提供的内存?
- 如果地址已知,如何获取指针变量的名称
- 如何处理参数中的基类和指针变量
- 指针变量 在数组中定位零
- 隐式指针变量,在自动定义中具有另一个指针变量
- 为什么可以将Char指针变量初始化为字符串,而INT指针变量不能初始化到整数数组
- 错误 C4703 可能未初始化的局部指针变量'y'使用