为何没有构造两次?

月牙尖上 月牙尖上 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

#include <stdio.h>

class base {
public:
explicit base() {
printf("base constructor \n");
}

~base() {
printf("base destructor \n");
}

void test() {
printf("do test() \n");
}

base(const base& rh) {
printf("int copy constructor \n");
}

base& operator =(const base& rh) {
printf("in assign \n");
return *this;
}
};

base test0()
{
base a;
return a;
}

base& test1() {
base a;
return a;
}

int main() {

base a = test0();//本以为,这会有两次的构造与析构。
a.test();

printf("will be exit \n");
return 0;
}


编译:g++ test.cpp -g
执行:./a.out
输出:
base constructor
do test()
will be exit
base destructor

/************* 环境信息 ******************/

gcc:gcc version 4.4.4 20100726 (Red Hat 4.4.4-13) (GCC)
os: centos 6.0 内核:2.6.32-71.el6.i686

/***************************************/

今天写了一个小的测试的程序,用来玩的。
我本以为,test0,这个函数执行的时候,会有两次的构造与析构的操作。可是实际上,却只有一次。
于是,我写了test1()这个函数,这个函数,到是执行了两次构造与析构。(当然,写法是不合法的,只是用来测试用滴)

于是,看c++ Primer,只说是临时对象,但是,那也应该是两次呀。或者,猜测g++做了什么优化吗?
求解!!

因为,平时写的时候,这种情况,一般都是直接用指针的,new后,外面主动释放。
...全文

相关推荐

Spring Bean重复执行两次(实例被构造两次)问题分析

NULL 博文链接:https://bijian1013.iteye.com/blog/2384411

weixin_38669628

没有可用的复制构造函数或复制构造函数声明

map使用std::map<int, CArray > 错误, 解决: 重写CArray, 重载构造函数并加const 添加操作 operator =

xiaolan_0558

c++ 子类构造函数初始化及父类构造初始化的使用

主要介绍了c++ 子类构造函数初始化及父类构造初始化的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

weixin_38684892

MMM-Launch:有没有想过人类多久将东西发射到太空? 一年一次? 两次? 错误的! 以一天为周期。 经常,一天几次! 不相信? 我也不

MMM-发射 有没有想过人类多久将东西发射到太空? 一年一次? 两次? 错误的! 以一天为周期。 经常,一天几次! 不相信? 我也不。 这个怎么运作 每 30 秒,MMM-Launch 会告诉您即将到来的日期、发射地点、航天器、发射者、任务、负责每次发射的机构、航天器的图片以及每个任务的完整描述。 例子 图片没有完整描述。 配置选项。 , , , , 包含带注释的 .css 文件,用于对齐和着色文本和图像大小。 安装 git clone https://github.com/mykle1/MMM-Launch进入~/MagicMirror/modules目录。 无需 API 密钥! 无需依赖人! 不开玩笑! Config.js 入口和选项 { module: 'MMM-Launch', position: 'top_left', //

dilikong

C++编程小心指针被delete两次

主要介绍了C++编程指针被delete两次的严重后果,以实例阐述了C++指针使用中的误区和注意点,需要的朋友可以参考下

weixin_38557095
评论 10
收藏 已收藏
分享
返回顶部
月牙尖上
C++ 语言 65,214 成员 250,514 内容