构造函数和析构函数java_对于默认构造函数和析构函数,“= default”与“{}”有什么不同?...
发布日期:2021-06-25 03:25:58 浏览次数:4 分类:技术文章

本文共 916 字,大约阅读时间需要 3 分钟。

之间的重要区别

class B {

public:

B(){}

int i;

int j;

};

class B {

public:

B() = default;

int i;

int j;

};

是 B() = default; 定义的默认构造函数被认为是 not-user defined . 这意味着在值初始化的情况下,如

B* pb = new B(); // use of () triggers value-initialization

完全没有使用构造函数的特殊类型的初始化将发生,对于内置类型,这将导致零初始化 . 如果是 B(){} ,则不会发生这种情况 . C标准n3337 § 8.5 / 7说

对类型为T的对象进行值初始化意味着: - 如果T是具有用户提供的构造函数(12.1)的(可能是cv限定的)类类型(第9节),则调用T的默认构造函数(并且如果T没有可访问的默认构造函数,则初始化是错误的); - 如果T是一个(可能是cv限定的)非联合类类型而没有用户提供的构造函数,那么该对象是零初始化的,如果T的隐式声明的默认构造函数是非平凡的,则调用该构造函数 . - 如果T是数组类型,则每个元素都是值初始化的; - 否则,对象被零初始化 .

例如:

#include

class A {

public:

A(){}

int i;

int j;

};

class B {

public:

B() = default;

int i;

int j;

};

int main()

{

for( int i = 0; i < 100; ++i) {

A* pa = new A();

B* pb = new B();

std::cout << pa->i << "," << pa->j << std::endl;

std::cout << pb->i << "," << pb->j << std::endl;

delete pa;

delete pb;

}

return 0;

}

可能的结果:

0,0

0,0

145084416,0

0,0

145084432,0

0,0

145084416,0

//...

转载地址:https://blog.csdn.net/weixin_35901163/article/details/114863476 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:java怎么实现复制粘贴_求助Java窗口菜单如何实现复制粘贴剪切等功能(内附源代码)...
下一篇:天干地支 工具类java_Java 日期工具类

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年03月10日 12时47分16秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

linux安装软件在boot,在Linux系统上安装Spring boot应用的教程详解 2019-04-21
linux进入用户user1主目录,Linux系统命令提示符为[user1@localhost root]当前用户所在目录为( )... 2019-04-21
取消linux自动登录,linuxdeepin 如何取消自动登录啊? 2019-04-21
linux线程存储,Linux系统编程手册:线程:线程安全和每线程存储 2019-04-21
linux以root账号登陆gnome,CentOS 7 - 以root身份登入Gnome 2019-04-21
linux crontab 备份数据库 空文件,Linux下使用crontab自动备份数据库 2019-04-21
linux批处理模式,巧用linux-top的批处理模式 2019-04-21
linux信号量机制例题,第二章 信号量机制及几个经典例题 2019-04-21
linux ba 模拟,在你的 Python 游戏中模拟引力 | Linux 中国 2019-04-21
c语言表达式3649的值是,535个C语言经典实例目录.doc 2019-04-21
c语言Wndproc未定义,小弟我用c语言写了一个windows窗口,为什么有提示未定义的变量类型... 2019-04-21
c语言中malloc数组,如何在C中对malloc()数组进行一行赋值? 2019-04-21
c语言调存储过程,写留言板–调用存储过程出问题 2019-04-21
c语言编程max,C语言编程题及答案.doc 2019-04-21
android测试页面,自动执行界面测试 | Android 开发者 | Android Developers 2019-04-21
android 图片点击变色,Android开发实现ListView点击item改变颜色功能示例 2019-04-21
android增删改查布局,Android之父_增删改查 2019-04-21
vowifi android开关,如何配置VoLTE, ViLTE and VoWifi(IMS config for VoLTE, ViLTE and VoWifi) 2019-04-21
电脑端的mafsvr服务关掉_网吧才是电脑优化的精髓!学会3招你也不用羡慕网吧的流畅了... 2019-04-21
html获取文件路径_HTML 文件路径 2019-04-21