IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++ new 对象的时候,加括号与不加的区别 -> 正文阅读

[C++知识库]C++ new 对象的时候,加括号与不加的区别

在代码中时常会遇到两种new的形式

A* a = new A;//①
A* a = new A();//②

那么,这两者有何区别吗?

结论

先给出结论:

  • 当A类无构造函数,有数据成员的情况下,有区别。①的数据成员为随机值,而②的数据成员会被初始化。
  • 当A类有构造函数,有数据成员的情况下,无区别。数据成员都为随机值,因为此时,初始化由构造函数去执行。
  • 如果A是空类,那么以上两种写法没有区别。

另外基本数据类型的情况如下:

int *a1 = new int;//初值随机
int *a2 = new int();//初值0
int *a3 = new int(100);//初值100

验证

环境:Clion 2022.1.1 + MinGW

这里声明了一个类A,里面有一个int型数据成员

class A
{
 public:
//	A() = default;
//	A(){}
	int m;
};

int main()
{
	A* a = new A;
	A* b = new A();

	return 0;
}

一,无构造函数的情况下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lCUISN2c-1653033154629)(C:\Users\Listening\AppData\Roaming\Typora\typora-user-images\image-20220520153121625.png)]

二,有构造函数的情况下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DfDLCaWy-1653033154631)(C:\Users\Listening\AppData\Roaming\Typora\typora-user-images\image-20220520153840974.png)]

注意:

A(){}A()=default是不一样的!!!

=default令编译器为某个类生成显式默认化的函数定义,简单来说,就是显式生成编译器默认的合成构造函数。这个和没有构造函数的情况(隐式)是一样的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YiiC1xqP-1653033154632)(C:\Users\Listening\AppData\Roaming\Typora\typora-user-images\image-20220520154213057.png)]

这里额外验证了一下,数据成员为类类型时的情况,也是和上述结论一致。

class A
{
 public:
	int m;
};

class B
{
	A a;
};

int main()
{
	B* b1 = new B;
	B* b2 = new B();
	return 0;
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rDZTfPxJ-1653033154632)(C:\Users\Listening\AppData\Roaming\Typora\typora-user-images\image-20220520154742259.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZrQTYrrP-1653033154633)(C:\Users\Listening\AppData\Roaming\Typora\typora-user-images\image-20220520154839483.png)]

C++ default

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-05-24 17:55:54  更:2022-05-24 17:57:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/14 3:48:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码