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)();
return 0;
}
中,返回的是A类的对象,之后会调用A中的拷贝构造器
A(A& another);
即用*_p的'值作为参数,在内存中构造一个新的对象,但它没有名字,是无名对象,之后运行该无名对象中的func()函数,运行完后,这个一次性的无名对象就会销毁,即调用析构函数。
同时,返回对象的话也不能在后续对它进行左值运算,编译器通不过而且也毫无意义,因为之后程序员是没法访问到这个无名变量的
仅此个人观点,有问题欢迎指正。
-
C语言数组的定义及引用
引导语:数组是在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来的一种形式。以下是本站小编分享给大家的C语言数组,希望大家喜欢!1.1一维数组的定义、初始化和引用1.一维数组的定义方式为:类型说明符数组名[常量表达式](1)数组名的命名方法...
-
有关C语言中获取文件状态的相关函数小结
C语言stat()函数:获取文件状态头文件:#include#include定义函数:intstat(constchar*file_name,structstat*buf);函数说明:stat()用来将参数file_name所指的文件状态,复制到参数buf所指的结构中。下面是structstat内各参数的说明:structstat{dev_tst_dev;//device文...
-
计算机二级C语言上机程序填空题
考虑到一部分同学的计算机二级C语言程序填空题基础比较薄弱,为此本站小编为大家整理了计算机二级C语言上机程序填空题,希望能够帮助到同学们。一、程序填空题1、给定程序中,函数fun的功能是根据形参i的值返回某个函数的值。当调用正确时,程序输出:x1=5.000000,x2=3...
-
C语言顺序结构知识归纳
C语言的顺序结构里面有哪些知识需要学习的呢,下面小编为大家归纳了C语言顺序结构知识,欢迎大家阅读!C语言顺序结构知识归纳一、表达式语句、函数调用语句和空语句1.C语言的语句共分五大类:表达式语句、控制语句、函数调用语句、空语句和复合语句。2.表达式语句的...