关于函数返回值的讨论与总结
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
关于函数返回值的讨论与总结相关推荐
- 14. 函数返回值为引用?
函数返回值可以是引用吗? 当然可以,只是在函数返回引用的时候需要注意几点.以下给出讨论! 函数在返回值的时候,会产生一个临时变量作为函数返回值的副本:而函数在返回引用的时候,不会产生副本!那么既然是引 ...
- 函数返回值是否使用引用类型的问题:理解引用、返回值
在<对象更有用的玻璃罩--常引用>一文中,介绍了对象作为函数的参数时,推荐使用引用的形式.并且,如果实际参数的值不允许改变时,声明为常引用更佳. 在<第8周-任务1-方案3-复数类中 ...
- 函数返回值 返回引用
先看看该链接讨论的问题作为热身.http://topic.csdn.net/u/20070616/13/2a6a1739-1a69-4829-a90f-fdb19a61e095.html 函数返回值和 ...
- linux获取命令的返回值,Shell $?:获取函数返回值或者上一个命令的退出状态
$?是一个特殊变量,用来获取上一个命令的退出状态,或者上一个函数的返回值. 所谓退出状态,就是上一个命令执行后的返回结果.退出状态是一个数字,一般情况下,大部分命令执行成功会返回0,失败返回1,这和C ...
- matlab 调用子函数返回值,matlab学习笔记13_1 函数返回值
一起来学matlab-matlab学习笔记13函数 13_1 函数返回值 觉得有用的话,欢迎一起讨论相互学习~Follow Me 函数返回一个值 返回值不必使用return语句,而是直接将需要返回的变 ...
- C++ 笔记(15)— 引用(声明引用、引用作为参数、引用作为函数返回值、const 用于引用)
引用是变量的别名.也就是说,它是某个已存在变量的另一个名字.一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量. 1. 创建引用 要声明引用,可使用引用运算符 & ,如下面的 ...
- C++ 笔记(02)— 程序结构(头文件说明、命名空间、函数返回值、函数参数、注释、语句结束符、cin/cout)
先看以下代码 #include <iostream> #include <string> using namespace std;int main() // main() 是程 ...
- C指针7:指针作为函数返回值
C语言允许函数的返回值是一个指针(地址),我们将这样的函数称为指针函数.下面的例子定义了一个函数 strlong(),用来返回两个字符串中较长的一个: #include <stdio.h> ...
- 使用指针做函数返回值
使用指针做函数返回值 1.当使用指针做为函数的返回值时,主函数处的char *p;将获得调用函数char *pf;的值,即一个地址值,如oxAE72.此时需要我们注意的是该地址值所指向的空间是否存在( ...
最新文章
- python-字符串数据类型内置方法
- 机器学习中的方法技术与应用场景
- Python-OpenCV 杂项(一):图像绘制
- Echarts散点图
- Boost:与容器相关的BOOST_TEST_EQ测试
- ITK:创建派生内核DerivativeKernel
- ListView上移 和下移
- 顶尖机器学习学习路线,6个月让你的技术成为行业TOP5%
- C语言 最大公约数和最小公倍数计算
- Android编译环境(1) - 编译Native C的模块
- Android应用开发——系统自带样式Android:theme
- matplotlib中ion()和ioff()的使用
- HAL库自学笔记#1【通用TIM定时器】
- 使用debussy出现的问题
- 微信小程序下载文件并重命名,并在微信可以打开、保存并转发给好友
- 迪进面向ConnectCore系统模块推出Digi ConnectCore语音控制软件
- Mysql相关操作与命令
- c+++怎样安装mysql,yum安装mysql | C/C++程序员之家
- php setcookie应该在哪里使用,php setcookie 用法
- CoNR让二次元动起来
热门文章
- Python中包(package)的调用方式
- BZOJ3133[Baltic2013]ballmachine
- Question: Database Of Tumor Suppressors And/Or Oncogenes
- pyinstaller 打包
- Mysql中的排序规则utf8_unicode_ci、utf8_general_ci的区别
- greenPlum资源隔离
- PAT (Basic Level) Practise:1037. 在霍格沃茨找零钱
- Oracle 11g 11201_RHEL5.5_RAC_VBOX 详细搭建步骤
- vim编辑器的设置文件
- poj 1390(消除方块(blocks))