Effective C++:类与函数的设计和申明(二)

2014-11-24 11:29:15 · 作者: · 浏览: 1
aItem& item)
{
cout<<" constructor DataItem"< value=item.value;
text=item.text;
//*this=item;//这句的作用等同于上面两句,但是它会调用operator= ,就多了一次方法调用
}
const DataItem& operator=(const DataItem& item)
{
cout<<" operator= DataItem"< text=item.text;
value=item.value;
return *this;
}
DataItem* operator&()
{
return this;
}
const DataItem* operator&()const
{
return this;
}
int GetValue()
{
return value;
}
void SetValue(int val)
{
value=val;
}

string& GetText()
{
return *text;
}

void SetText(string* txt)
{
text=txt;
}
private :
int value;
string* text;
};

两个对比方法及测试代码:

DataItem getDataItemByValue(DataItem item)
{
return item;
}
const DataItem& getDataItemByReference(const DataItem& item)
{
return item;
}
void TestDataItem()
{
DataItem item;
cout<<"getDataItemByValue start:"< getDataItemByValue(item);
cout<<"getDataItemByValue end"< cout< cout<<"getDataItemByReference start:"< getDataItemByReference(item);
cout<<"getDataItemByReference end"< }

结果截图:
类与函数的设计和申明


从结果中我们看到pass-by-value多调用两次构造函数,两次析构函数,还有对象的数据成员的构造和析构,损失的确是很惨重。