C++中new的返回值是什么类型
时间: 2024-06-13 19:06:27 浏览: 12
在C++中,new的返回值是指向所分配内存的指针,该指针指向的类型与new后面的类型相同。如果new请求失败,则返回空指针。例如:
```c++
int* p = new int(87); // 返回指向int类型的指针
double* q = new double(3.14); // 返回指向double类型的指针
char* r = new char[10]; // 返回指向char类型数组的指针
if (r == nullptr) {
// new请求失败,返回空指针
}
```
相关问题
c++返回值类型协变
C++11引入了返回值类型协变(Return Type Covariance)的特性,即派生类中的重写函数的返回类型可以是基类函数返回类型的派生类型。这个特性对于实现多态很有用,可以提高代码的可读性和可维护性。
例如,假设有一个基类Animal,它有一个虚函数getType(),返回类型为std::string。现在我们定义一个派生类Dog,它重写了getType()函数,返回类型为const char*。这是合法的,因为const char*是std::string的派生类型。
```c++
class Animal {
public:
virtual std::string getType() const {
return "Animal";
}
};
class Dog : public Animal {
public:
const char* getType() const override {
return "Dog";
}
};
```
在使用时,我们可以通过基类指针来调用派生类的实现:
```c++
int main() {
Animal* animal = new Dog();
std::cout << animal->getType() << std::endl; // 输出 "Dog"
delete animal;
return 0;
}
```
需要注意的是,返回值类型协变只适用于指针或引用类型的返回值,对于值类型的返回值则不适用。此外,C++11引入了override关键字来显式声明函数重写,可以更加安全地防止重写错误。
c++中new的用法
在C语言中,new是一个用于动态申请存储空间的运算符。使用new可以申请一个对象,并返回对应数据类型的地址。比如,使用new可以申请一个初值为10的整型数据,如下所示:
int *p = new int(10); //
此外,new还可以用于申请数组。例如,使用new申请一个能存放10个整型数据元素的数组,可以这样写:
int *arr = new int[10]; //
需要注意的是,new是一个运算符,不需要导入头文件,而malloc函数则需要导入头文件<malloc.h>来使用。此外,使用malloc函数时需要使用sizeof运算符来给出申请空间的大小,而new运算符会自动计算出所需申请空间的大小。另外,malloc的返回值通常需要进行强制类型转换,而new运算符可以直接返回对应数据类型的地址。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [C++之new的使用](https://blog.csdn.net/qq_54182926/article/details/119193250)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.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)