码迷,mamicode.com
首页 > 其他好文 > 详细

4. 参数传递与返回值

时间:2020-02-10 14:03:06      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:传递   png   val   就会   参数传递   构造函数   double   lex   clu   

1. 定义在私有区域中的构造函数(内容略)

2. 常量成员函数(const member functions)

    double real() const { return re; }
    double imag() const { return im; } 

上面这两个函数只是把函数的实部和虚部拿出来,并不是写,不写就不会改变数据,所以可以定义成常量成员函数。函数前面需要加const修饰符的时候一定要加,不加的话可能会产生不希望的后果。比如:

const complex c1(2, 1);

这一句就是说,我创建对象的时候,我的数据不可以被改变,但是假如调用函数real()的时候,real()函数前面没有加const,就会产生矛盾,因为没有用const修饰的函数意味着:进来的数据有可能被改变。

#include<iostream>
#include"complex.h"
using namespace std;
int main()
{
    const complex c1(2, 1);
    cout << c1.real() << endl;
    cout << c1.imag() << endl;


    system("pause");

    return 0;
}

 

技术图片

 3. 参数传递(pass by value or pass by reference(to const))

尽量不要pass by value,因为字节数(可能比较大)不定。C语言传的是指针,永远是4个bytes。C++有一个东西像指针,但是更漂亮,这就是引用。引用很抽象,引用在底部相当于一个指针,所以传引用就会像传指针那样的快。最好所有的参数传递都传引用。

  • 传引用到const变量的话,值不会被改变;
  • 传引用到非const变量的话,值可能会被改变;
  • 基础数据类型传值,自定义类型传引用(来自于网友)。

技术图片

4. 返回值传递(pass by value or pass by reference(to const))

 技术图片

 

4. 参数传递与返回值

标签:传递   png   val   就会   参数传递   构造函数   double   lex   clu   

原文地址:https://www.cnblogs.com/yibeimingyue/p/12290380.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!