您当前位置: 首页 » [linux总结] » *生活* » now-way » object » Qt » 思考 » 重新理解text().asd()

重新理解text().asd()

2009-09-10 |

首先理解这么一个玩意

class a

{

public:

int b()

{…..}

}

a c;

要访问b,可以这么访问c.b();

那么text().asd()的理解也就类似于c.b(),但是有些微妙之处。

首先,text()是一个函数,而这个text()函数恰恰是返回a类型对象的地址。即

a& text()

{

return *this;

}

这里a& text()不是指针函数,是一个引用返回(C++ primer把& 叫做解引用)。也就是说text()自身返回某个a类型对象的地址,也就等价于之前所说的c.b();

但网友指出,区别在于前者在内存区域中没有命名,而后者有个c的命名。而且前者可以多次访问成员,后者要多次访问就要写多次c.b()

下面是网友为了让我理解更透彻做的几个小测试

class t12
{
public:
t12& f() {std::cout << “f()” << std::endl; return *this;}
t12& operator -(int i) {std::cout << “xxx” << std::endl; return *this;}
};

int main()
{
t12 tyh_123;
tyh_123 – 3 – 4 – 5;
tyh_123.f() – 3 – 4 – 5;
((tyh_123.operator -(1)).operator -(2)).operator -(3).f();
}