关于重载的返回值问题

wudichaoren2010 2015-01-03 09:04:42

class Object
{
private:
int value;
public:
Object(int i):value(i)
{
}

const Object& operator=(const Object& obj)
{
value = obj.value;
return *this;
}

const Object& operator=(const int i)
{
value = i;
return *this;
}

int getValue(void) const
{
return value;
}

static void Test(void)
{
Object a(1),b(2),c(3);
Widget x(1), y(2), z(3);

a = b = c = 4;
//((a=b)=c)=4; // Error 2 error C2678: binary '=' :/
no operator found which takes a left-hand operand of type 'const Object' /
(or there is no acceptable conversion)


}





const Object& operator=(const int i)
{
value = i;
return *this;
}


返回值是是什么?
是引用还是地址或者原对象?
...全文
181 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wudichaoren2010 2015-01-04
  • 打赏
  • 举报
回复
谢谢
encoderlee 版主 2015-01-03
  • 打赏
  • 举报
回复
Derived d(10,20); 你构造Derived对象的时候传给y的参数是10, Derived(int y, int z):Base(y) Base的构造函数接收到的参数也是10 当你传入一个参数10给它后,Base(int y=0)该默认参数0就不起作用了
wudichaoren2010 2015-01-03
  • 打赏
  • 举报
回复


class Base
{private:
int Y;
public:
Base(int y=0) {Y=y;cout<<"Base("<<y<<")\n";}
~Base() {cout<<"~Base()\n";}
void print() {cout <<Y<< "";}
};
class Derived:public Base
{
private:
	int Z;
public:
	Derived(int y, int z):Base(y)
	{
		Z=z;
		cout<<"Derived("<<y<<","<<z<<")\n";
	}
	~Derived() {cout<<"~Derived()\n";}
void print()
{
	Base::print();
	cout<<Z<<endl;
}
};
void main()
{Derived d(10,20);
d.print();
}

为什么不输出Base(0);
encoderlee 版主 2015-01-03
  • 打赏
  • 举报
回复
返回值是Object的引用 比如 Object ob(10); ob = 5; //该表达式返回的是ob的const引用

65,187

社区成员

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

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