关于等于重载操作符的问题

youzhipeng 2009-05-04 05:26:27
#include <iostream>
using namespace std;
class Test1
{
public:
Test1(int n) { cout<<"Created"<<endl; num = n; }
Test1& operator= ( const Test1& T )
{
cout<<"等于重载."<<endl;
this->num = T.num;
return *this;
}
public:
int num;
};

int main()
{
Test1 TTTT(1);
Test1 t1 = TTTT;
system("pause");
return 0;
}

****************************************************************************
输出是:
Created...


*******************问题*************
Test1 t1 = TTTT; 为什么这里不是调用 =重载了的操作符???
...全文
203 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
宁谧青风 2011-03-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 mengde007 的回复:]
Test1 t1 = TTTT;
调用了拷贝构造了;
[/Quote]
4 楼正解
youzhipeng 2009-05-04
  • 打赏
  • 举报
回复
回10楼: 如果类有operator=重载了, 但我又想使用你说的位拷贝,怎么办?

mengde007 2009-05-04
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 youzhipeng 的回复:]
#include <iostream>
using namespace std;
class Test1
{
public:
Test1() {

}
public:
int num;
};

int main()
{
Test1 TTTT;
Test1 other;
other = TTTT; 命名没有=重载运算,但为什么能操作?
system("pause");
return 0;
}
[/Quote]
执行了位拷贝;
youzhipeng 2009-05-04
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;
class Test1
{
public:
Test1() {

}
public:
int num;
};

int main()
{
Test1 TTTT;
Test1 other;
other = TTTT; 命名没有=重载运算,但为什么能操作?
system("pause");
return 0;
}

youzhipeng 2009-05-04
  • 打赏
  • 举报
回复
回三楼: 你这句话,我似乎以前知道,但忘记了,现在被你提起了,感谢。
帅得不敢出门 2009-05-04
  • 打赏
  • 举报
回复
Test1 t1;
t1 = TTTT;才会调用operator =
帅得不敢出门 2009-05-04
  • 打赏
  • 举报
回复
更正下,
gcc它调用了拷贝构造函数了.
youzhipeng 2009-05-04
  • 打赏
  • 举报
回复
回1楼: 我试过printf,还是老样子。
回2楼: 我的这个是赋值操作符的重载,和==操作符有关联吗?


新的问题:

为什么,我没有写赋值(=)操作符,也能运行成功?
mengde007 2009-05-04
  • 打赏
  • 举报
回复
Test1 t1 = TTTT;
调用了拷贝构造了;
goodname 2009-05-04
  • 打赏
  • 举报
回复
Test1 t1;
t1 = TTTT;//这样才是


你只要记住一句就行了,赋值指的是对象已经创建好了,再给他赋予一个新值。

既然t1还没有构建起来所以它属于构造函数类别的
Jarrys 2009-05-04
  • 打赏
  • 举报
回复
等于是 "=="不是“=”
因为为真调用构造函数
帅得不敢出门 2009-05-04
  • 打赏
  • 举报
回复
printf试试
可能与cout对象生存期有关

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧