双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

别人的帖子,我没看懂,能帮忙解答一下吗?

caddor caddor 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
貌似是昨天的帖子,原帖地址:http://topic.csdn.net/u/20111108/17/cabc1d5d-302c-43ae-b833-72253ef2a687.html


#include <iostream>
using namespace std;
class T{
public:
int n;
T()
{
std::cout<<"T()"<<std::endl;
n=0;
};
T(int n){
std::cout<<"T("<<n<<")"<<std::endl;
this->n=n;
};
T(T &other) {
std::cout<<"T(T&)"<<std::endl;
this->n = other.n;
};

operator int(){
std::cout<<"operator int()"<<" return "<<n<<std::endl;
return n;
};

};

int main()
{
T x=T(30);
system("pause");
return 0;
}


1.

T(30)表示什么意思,有个构造函数是:T(int n)这样就构造了一个 无名对象,

T x=T(30); 不就是一个 先构造一个无名对象,然后调用拷贝构造函数,去构造 新对象x

,可是结果我就不说了,,完全没有进入:拷贝构造函数。。。。。。


有人回答:因为T(T &other)这里没有const导致的,

我说说,我的对const 引用的理解:临时对象,传参数的时候,那么拷贝构造必须是cosnt&。。。。

T x=T(30)不就相当于:T x(T(30)嘛? T(30)不是临时对象吧? 不加cosnt,也可以啊。。。。对不?



问题2:

操作符的重载,operator int(),这种操作符,惭愧,没研究过, 只记得CString有一个LPCTSTRING()
,
这种操作符函数何时被调用,我的里理解是int a=(int)T对象,这样会被调用

为什么有人回帖, T x=T(30)会去调用 operator int()呢????



没分了,就四十五分的可用分,,谢谢了啊

、

...全文

相关推荐

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