C语言

C++返回对象和返回引用

时间:2024-05-31 06:35:41 C语言 我要投稿
  • 相关推荐

C++返回对象和返回引用

  引用的本质是对裸露的地址的二次包装,它实际返回的还是一个变量或对象的地址,因此如果返回引用不可以返回局部变量的,因为函数在返回之后,该变量就销毁。下面是其C++返回对象和返回引用,一起来学习下吧:

  代码是对运算符*进行重载,返回引用和返回对象有不同的结果。

  [cpp] view plain copy#include

  using namespace std;

  class A

  {

  public:

  A() { cout << "A::A()" << endl;}//A构造函数

  A(A& another){cout << "A(A& another)" << endl;}

  ~A(){ cout << "~A::A()" << endl;}//A析构函数

  void func(){ cout << "class A::void func()" << endl;}

  };

  class B

  {

  public:

  B(A* p) :_p(p){cout << "B::B()" << endl;}//B构造函数

  ~B(){ cout << "~B::B()" << endl; }//B析构函数

  A operator*(){ //运算符重载*

  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语言函数的参数和返回值09-14

Java中对象和引用的具体区别05-18

网页点击按钮返回顶部代码11-05

C语言返回多个值的方法07-07

C语言函数返回值解析09-17

Excel添加超链接返回主界面10-23

Excel添加超链接返回主界面按钮11-01

C语言中返回字符串函数的实现方法09-19

Win8如何设置让计算机图标返回桌面08-08

C语言单向链表环测试并返回环起始节点的方法10-04