随笔 - 1760  文章 - 0  评论 - 109  阅读 - 431万

4. 参数传递与返回值

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

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

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

上面这两个函数只是把函数的实部和虚部拿出来,并不是写,不写就不会改变私有数据re 和 im,所以可以定义成常量成员函数。所谓常量成员函数就是不改变私有数据的成员函数,表面上看的话就是函数名和作用域之间加上const修饰符的函数,加const就意味着不打算改变私有数据,不改变私有数据就一定要加上const.函数前面需要加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))

选择pass by reference多半是考虑到效率。

 

 5. 友元函数(friend)

特点:

  • 可以自由取得私有(区域)变量。

 6. 不能返回局部变量的引用

函数之间在进行参数传递和值传递的时候,都是要尽量传递引用,但是在进行值传递的时候,有一种情况不能传递引用,这就是值被赋给一个函数内的临时变量的时候,因为临时变量的生命周期只在函数内,不在函数外。下面这个例子,ths本来就在,是非临时变量,所以可以传引用

 

posted on   一杯明月  阅读(498)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示