类成员函数返回对象和返回引用的区别
2014-06-07 11:34
281 查看
Base fun1()返回类类型,返回的类类型不能作为左值,但返回的类类型可以直接调用成员函数来修改,如fun1().set(); 返回类类型调用复制构造函数
Base& fun2() 返回类的引用可以作为左值,并且返回的类类型引用可以直接调用成员函数来修改,返回的类类型不会调用复制构造函数。
//返回对象和引用
#include<iostream>
using namespace std;
class Base
{
public:
Base():data(2){}
~Base(){}
Base fun1()
{
cout<<"data= "<<data<<endl;
return *this;
}
Base& fun2()
{
cout<<"data= "<<data<<endl;
return *this;
}
void set(int value)
{
data=value;
cout<<"data= "<<data<<endl;
}
void print()
{
cout<<"data= "<<data<<endl;
}
private:
int data;
};
int main()
{
cout<<"=========Return Object============"<<endl;
Base b1;
b1.fun1().set(5);
b1.print();
cout<<"=========Return Reference============"<<endl;
Base b2;
b2.fun2().set(5);
b2.print();
return 0;
}
相关文章推荐
- c++对象成员函数返回自身引用时出现的诡异问题及解决办法
- effective c++条款21,22,23(返回对象时,别妄想反回其引用,将成员变量声明为private,宁可拿非成员非友元函数替换成员函数(增强封装性))
- c++对象成员函数返回自身引用时出现的诡异问题及解决办法
- 函数返回对象和返回对象的引用的区别
- C++成员函数返回对象的引用
- php 函数引用、变量引用、对象引用的区别
- 关于函数返回引用和const对象
- 极限研究-"&amp;"函数返回引用与返回普通类型的区别
- effective C++笔记之条款31、32: 千万不要返回局部对象的引用,也不要返回函数内部用new初始化的指针所指对象的引用、尽可能地推迟变量的定义
- 条款31: 千万不要返回局部对象的引用,也不要返回函数内部用new初始化的指针的引用 (转自effective c++ second edition)
- Effective C++ 第二版 22)传引用 23)返回对象 24)函数重载vs缺省值
- 关于 类成员函数返回指向const临时变量的引用
- 函数返回的临时对象为const类型,const引用
- const成员函数和非const成员函数返回引用的问题
- C++函数参数传值OR传引用_C++函数返回值返回对象OR对象引用
- 函数的返回值的类型是引用类型和非引用类型的区别
- 函数可以返回左值,不能返回局部对象的引用
- 函数调用时对象指针与对象引用的区别与关系
- 返回对象和返回对象的引用的区别
- 返回vector对象与引用的区别