A* b = new B();是什么意思
时间: 2024-02-16 21:00:20 浏览: 143
这行代码的意思是创建一个指向 B 类型对象的指针,并将其赋值给一个 A 类型的指针变量 b,即:
```c++
A* b = new B();
```
其中,A 是 B 的基类,B 是 A 的派生类。这行代码创建了一个 B 类型的对象,并返回其地址,然后将这个地址赋值给一个 A 类型的指针变量 b。这样做的目的是为了实现多态性,即通过 A 类型的指针变量 b,可以访问 B 类型对象中继承自 A 类型的成员变量和成员函数,也可以访问 B 类型对象中新增的成员变量和成员函数。
需要注意的是,当使用 new 关键字创建一个对象时,需要在程序结束时手动释放内存。可以使用 delete 关键字来释放该对象的内存,即:
```c++
delete b;
```
这样可以释放 A 类型指针变量 b 所指向的 B 类型对象占用的内存空间。
相关问题
A* p=new B,A是基类,B从A继承
这是一个基类指针指向派生类的对象,也就是说,通过指针p只能访问到基类A中的成员,而不能访问派生类B中新增的成员。如果想要访问派生类B中新增的成员,需要使用强制类型转换将基类指针转换为派生类指针。例如:
```cpp
B* q = static_cast<B*>(p);
q->newMemberFunc();
```
需要注意的是,强制类型转换有一定的风险,如果类型转换不正确,可能导致程序崩溃或者发生未定义的行为。因此,在进行强制类型转换时,需要格外小心,确保类型转换的正确性。
int ** dcmDimensionRnodeArray = new int * [nr]; void** ara = new void* [nr]; float** rna = new float * [nr];
引用[1]:在C语言中,指针是一种特殊的变量类型,它存储了一个变量的内存地址。指针变量可以指向不同类型的数据,包括整数、浮点数、字符等。指针变量的声明方式有多种形式,例如int *a和int* a都是合法的声明方式,它们都表示a是一个指向整数的指针变量。在声明多个指针变量时,需要注意每个指针变量的类型,例如int *a,b;只有a是指针变量,而int* a,b;则会让人误以为a和b都是指针变量[^1]。
引用:在C语言中,指针的使用非常灵活,可以通过指针来操作内存中的数据。int *p=0;表示将指针p初始化为0,即空指针。而int *p;*p=0;则表示先声明了一个指针变量p,然后将p指向的内存地址的值设置为0。需要注意的是,使用未初始化的指针可能会导致程序崩溃或产生不可预料的结果。另外,符号“&”用于获取变量的地址,例如&a表示变量a的地址[^2]。
根据提供的代码片段int ** dcmDimensionRnodeArray = new int * [nr]; void** ara = new void* [nr]; float** rna = new float * [nr];,可以看出这是在C++中动态分配了一个二维数组。其中,dcmDimensionRnodeArray是一个指向指针的指针变量,ara是一个指向void指针的指针变量,rna是一个指向浮点数指针的指针变量。这些指针变量分别指向了一个长度为nr的一维数组,每个元素都是一个指针。通过这种方式,可以实现多维数组的动态分配和访问。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)