C& C::operator =( int i )
{
m_val=a;
if( l <= i && i <= m || n <= i && i <= h || i == b )
m_val=i;
return *this;
第一个C为函数名称(我猜测是不是就是构造函数),第二个C为一个类的名称, m_val为C类的私有成员变量,请问*this返回的是什么值?这样的格式定义运算符的重载是什么含义?
我看操作符重载的格式是:返回类型 operator 运算符号(参数说明)怎么跟上面的代码不一直?
请问被重载了得=号操作符,直接可以给这个类的对象赋值吗?还是必须得给一个地址赋值(类引用取的是什么地址?)
追答可以直接给对象赋值,可直接调用 :C = 1;
因为你返回类型定义的是引用 C& ,所以可以真正改变C的值,达到赋值目的,如果返回类型定义为C,则不可以。
类引用可以理解为对类可以进行修改的一种类型,如果你想修改类本身,必须用类引用;如果不用,则传回的是类的一个副本,函数结束就销毁了
你的意思是:
class C
{
}
C c;
可以直接使用上面重载后的运算符:c=1;
是这样的吗?
是的。你在机子上多试试吧。应该用
C c;
c = 1;