关于C++中new的基本使用方法介绍

如大家所了解的,在现代主流面向对象语言中,new是一个非常人尽皆知的操作,其用于向堆内存申请一定的空间,并构造出一个对象。

而 new 操作一般来说会经过以下三个步骤:

向堆申请对应大小的空间;

调用指定对象的指定构造器;

返回空间的地址或引用。

了解到这一步,对于大多数开发者而言已经是能够应付开发中的大多数场景。

而在 C++ 语言中,为了保证能够其对内存有更加自由的操作,所提出的拓展性极为丰富。

new的基本使用

虽然 new 操作一直被大家非常频繁的使用,但是对于一些比较特殊的情况,却很少有人注意。下面来先介绍以下 new 的基础使用方式。

单个对象

new 操作最基本的用法就是 new 出一个对象了。这个对象可以是基本的数据类型,也可以是自定义的类型,最常见的就是一个类对象。

而当对基本类型不指定具体初始化数据时,就会出现所谓的垃圾值。而当类可以进行默认构造时,也可以不进行任何修饰,但同样的可以调用指定的构造函数。

在 C 语言中,使用 malloc(),返回的是 void* 类型。而 C++ 中的 new Type 返回的是具体 Type* 的类型,因此这里还可以使用 auto 来自动识别指针类型。

复制代码
struct Node {
    int x;
    Node(int x) {
        this->x = x;
    }
};

int main() {
    int* p = new int;
    auto nodep = int Node(1);
}
相关推荐
青少儿编程课堂29 分钟前
迪杰斯特拉(Dijkstra)算法:单源最短路与赛场路线规划
c++·python·算法·bfs·信息学竞赛
沫璃染墨2 小时前
《Qt从零入门系列(十三):QSS样式表详解——从选择器与层叠规则到控件美化实战》
开发语言·css·c++·qt·ui·qt6.3·qss
达子6663 小时前
RUST 图解 第 3 章:通用编程概念(Common Programming Concepts)
开发语言·算法·rust
道尔柯南3 小时前
C++ 面向对象编程入门:类和对象(上)
开发语言·c++·算法
楠楠子呀3 小时前
英语、西语、阿语客户各开一个口:多语言获客的分流方案
开发语言·javascript·ecmascript·跨境电商·whatsapp·营销工具
tachibana23 小时前
使用for range 的时候,它的地址会发生变化吗?
开发语言·后端·golang·go·语法
临床数据科学和人工智能兴趣组4 小时前
正则表达式的基础语法的基本符号
开发语言·人工智能·python·正则表达式·r语言·r语言-4.2.1·workbudyy
王中阳Go4 小时前
Go 后端转 AI:非科班怎么补?一张 3 列路线表(可保存)
开发语言·人工智能·后端·python·golang·大语言模型
geats人山人海4 小时前
java 4继承
java·开发语言
aqiu1111114 小时前
【C++算法打怪专栏】C++ `unordered_set` 常用初始化与插入方法总结
开发语言·c++·算法