当前位置: 代码迷 >> 综合 >> c/c++中const参数传递和函数返回值
  详细解决方案

c/c++中const参数传递和函数返回值

热度:34   发布时间:2023-10-15 13:33:12.0

对于 const 修饰函数参数可以分为三种情况。

A:值传递的 const 修饰传递,一般这种情况不需要 const 修饰,因为函数会自动产生临时变量复制实参值。

#include<iostream>using namespace std;void Cpf(const int a)
{cout<<a;// ++a;  是错误的,a 不能被改变
}int main(void){Cpf(8);system("pause");return 0;
}

B:当 const 参数为指针时,可以防止指针被意外篡改。

#include<iostream>using namespace std;void Cpf(int *const a)
{cout<<*a<<" ";*a = 9;
}int main(void)
{int a = 8;Cpf(&a);cout<<a; // a 为 9system("pause");return 0;
}

C:自定义类型的参数传递,需要临时对象复制参数,对于临时对象的构造,需要调用构造函数,比较浪费时间,因此我们采取 const 外加引用传递的方法。

并且对于一般的 int、double 等内置类型,我们不采用引用的传递方式。

#include<iostream>using namespace std;class Test
{
public:Test(){}Test(int _m):_cm(_m){}int get_cm()const{return _cm;}private:int _cm;
};void Cmf(const Test& _tt)
{cout<<_tt.get_cm();
}int main(void)
{Test t(8);Cmf(t);system("pause");return 0;
}

结果输出 8

对于 const 修饰函数的返回值。

Const 修饰返回值分三种情况。

A:const 修饰内置类型的返回值,修饰与不修饰返回值作用一样。

#include<iostream>using namespace std;const int Cmf()
{return 1;
}int Cpf()
{return 0;
}int main(void)
{int _m = Cmf();int _n = Cpf();cout<<_m<<" "<<_n;system("pause");return 0;
}

B: const 修饰自定义类型的作为返回值,此时返回的值不能作为左值使用,既不能被赋值,也不能被修改。

C: const 修饰返回的指针或者引用,是否返回一个指向 const 的指针,取决于我们想让用户干什么。

  相关解决方案