C++返回对象和返回引用
引用的本质是对裸露的地址的二次包装,它实际返回的还是一个变量或对象的地址,因此如果返回引用不可以返回局部变量的,因为函数在返回之后,该变量就销毁。下面是其C++返回对象和返回引用,一起来学习下吧:
代码是对运算符*进行重载,返回引用和返回对象有不同的结果。
[cpp] view plain copy#include
using namespace std;
class A
{
public:
A() { cout << "A::A()" << endl;}/pic/p>
A(A& another){cout << "A(A& another)" << endl;}
~A(){ cout << "~A::A()" << endl;}/pic/p>
void func(){ cout << "class A::void func()" << endl;}
};
class B
{
public:
B(A* p) :_p(p){cout << "B::B()" << endl;}/pic/p>
~B(){ cout << "~B::B()" << endl; }/pic/p>
A operator*(){ /pic/p>
return *_p;
}
private:
A* _p;
};
int main(){
A p1;
B p2(&p1);
(*p2).func();
return 0;
}
中,返回的是A类的对象,之后会调用A中的拷贝构造器
A(A& another);
即用*_p的值作为参数,在内存中构造一个新的对象,但它没有名字,是无名对象,之后运行该无名对象中的func()函数,运行完后,这个一次性的无名对象就会销毁,即调用析构函数。
同时,返回对象的话也不能在后续对它进行左值运算,编译器通不过而且也毫无意义,因为之后程序员是没法访问到这个无名变量的
仅此个人观点,有问题欢迎指正。
【 C++返回对象和返回引用】相关文章:
C++ 中引用和指针的关系11-08
C语言函数的参数和返回值10-18
关于C和C++函数的相互引用02-25
c++ const引用与非const引用02-07
Java中对象和引用的具体区别11-22
C语言函数的返回值10-12
C语言返回多个值的方法08-27
C++ 中指针和引用区别有哪些01-09
网页点击按钮返回顶部代码11-30
- 相关推荐