C++ 对象的隐式转换。

Balancer Balancer 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我用Visual Studio 2008编写如如下代码:
#include <iostream>
using namespace std;

class Human
{
public:
Human(int nAge)
{
m_nAge = nAge;
m_nHeight = 183;
cout << "构造函数被执行" << endl;
}

Human(Human& man)
{
m_nAge = man.m_nAge;
m_nHeight = man.m_nHeight;
cout << "复制构造函数被执行" << endl;
}

~Human()
{
cout << "析构函数被执行" << endl;
}

void Print()
{
cout << m_nAge << "\t" << m_nHeight << endl;
}

private:
int m_nAge;
int m_nHeight;
};

int main()
{
Human a(26);
a.Print();
a = 27;
a.Print();
return 0;
}

相关代码与执行结果的对应关系如下:
Human a(26); // 构造函数被执行
a.Print(); // 26 183
a = 27; // 构造函数被执行 析构函数被执行,相当于a = Human(27),但是没有调用复制构造函数,为什么?
a.Print(); // 27 183
return 0; // 析构函数被执行,对象a被析构掉

我的问题是红颜色的文字部分,谢谢。
...全文

相关推荐

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