class A
{
public:
A()
{
cout<<"普通构造函数"<<endl;
}
A(const A& a)
{
cout<<"copy construct"<<endl;
}
~A()
{
cout<<"deconstruct"<<endl;
}
A& operator=(const A &a)
{
cout<<"复制操作符"<<endl;
return *this;
}
};
A fA(A a)
{
//A a;
return a;
}
int main()
{
A a;
A b;
b=fA(a);

system("pause");
return 0;
}

1.  对于函数返回的是引用还是非引用,如果我们采用这种方式  A b=fun(a) ,不产生影响。

2.  如果 以这种方式调用, A b ; b=fun(a)  且 函数已拷贝的形式返回,那么可以分为三种

函数声明形式

A fun(A &a)

{

return a;

}

A fun(A a)

{

return a;
}

A fun()

{

A a;

return a;
}

函数返回对于拷贝构造函数调用的情况 b=fun(a) 调用一次拷贝构造函数 调用两次拷贝构造函数,一次是传入实参的时候,一次是return 的时候 不调用拷贝构造函数。(这个比较奇怪)我想是编译器优化的结果。

转载于:https://www.cnblogs.com/dyc0113/p/3192766.html

关于函数返回值的讨论与总结相关推荐

  1. 14. 函数返回值为引用?

    函数返回值可以是引用吗? 当然可以,只是在函数返回引用的时候需要注意几点.以下给出讨论! 函数在返回值的时候,会产生一个临时变量作为函数返回值的副本:而函数在返回引用的时候,不会产生副本!那么既然是引 ...

  2. 函数返回值是否使用引用类型的问题:理解引用、返回值

    在<对象更有用的玻璃罩--常引用>一文中,介绍了对象作为函数的参数时,推荐使用引用的形式.并且,如果实际参数的值不允许改变时,声明为常引用更佳. 在<第8周-任务1-方案3-复数类中 ...

  3. 函数返回值 返回引用

    先看看该链接讨论的问题作为热身.http://topic.csdn.net/u/20070616/13/2a6a1739-1a69-4829-a90f-fdb19a61e095.html 函数返回值和 ...

  4. linux获取命令的返回值,Shell $?:获取函数返回值或者上一个命令的退出状态

    $?是一个特殊变量,用来获取上一个命令的退出状态,或者上一个函数的返回值. 所谓退出状态,就是上一个命令执行后的返回结果.退出状态是一个数字,一般情况下,大部分命令执行成功会返回0,失败返回1,这和C ...

  5. matlab 调用子函数返回值,matlab学习笔记13_1 函数返回值

    一起来学matlab-matlab学习笔记13函数 13_1 函数返回值 觉得有用的话,欢迎一起讨论相互学习~Follow Me 函数返回一个值 返回值不必使用return语句,而是直接将需要返回的变 ...

  6. C++ 笔记(15)— 引用(声明引用、引用作为参数、引用作为函数返回值、const 用于引用)

    引用是变量的别名.也就是说,它是某个已存在变量的另一个名字.一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量. 1. 创建引用 要声明引用,可使用引用运算符 & ,如下面的 ...

  7. C++ 笔记(02)— 程序结构(头文件说明、命名空间、函数返回值、函数参数、注释、语句结束符、cin/cout)

    先看以下代码 #include <iostream> #include <string> using namespace std;int main() // main() 是程 ...

  8. C指针7:指针作为函数返回值

    C语言允许函数的返回值是一个指针(地址),我们将这样的函数称为指针函数.下面的例子定义了一个函数 strlong(),用来返回两个字符串中较长的一个: #include <stdio.h> ...

  9. 使用指针做函数返回值

    使用指针做函数返回值 1.当使用指针做为函数的返回值时,主函数处的char *p;将获得调用函数char *pf;的值,即一个地址值,如oxAE72.此时需要我们注意的是该地址值所指向的空间是否存在( ...

最新文章

  1. python-字符串数据类型内置方法
  2. 机器学习中的方法技术与应用场景
  3. Python-OpenCV 杂项(一):图像绘制
  4. Echarts散点图
  5. Boost:与容器相关的BOOST_TEST_EQ测试
  6. ITK:创建派生内核DerivativeKernel
  7. ListView上移 和下移
  8. 顶尖机器学习学习路线,6个月让你的技术成为行业TOP5%
  9. C语言 最大公约数和最小公倍数计算
  10. Android编译环境(1) - 编译Native C的模块
  11. Android应用开发——系统自带样式Android:theme
  12. matplotlib中ion()和ioff()的使用
  13. HAL库自学笔记#1【通用TIM定时器】
  14. 使用debussy出现的问题
  15. 微信小程序下载文件并重命名,并在微信可以打开、保存并转发给好友
  16. 迪进面向ConnectCore系统模块推出Digi ConnectCore语音控制软件
  17. Mysql相关操作与命令
  18. c+++怎样安装mysql,yum安装mysql | C/C++程序员之家
  19. php setcookie应该在哪里使用,php setcookie 用法
  20. CoNR让二次元动起来

热门文章

  1. Python中包(package)的调用方式
  2. BZOJ3133[Baltic2013]ballmachine
  3. Question: Database Of Tumor Suppressors And/Or Oncogenes
  4. pyinstaller 打包
  5. Mysql中的排序规则utf8_unicode_ci、utf8_general_ci的区别
  6. greenPlum资源隔离
  7. PAT (Basic Level) Practise:1037. 在霍格沃茨找零钱
  8. Oracle 11g 11201_RHEL5.5_RAC_VBOX 详细搭建步骤
  9. vim编辑器的设置文件
  10. poj 1390(消除方块(blocks))