C++参数传递与返回值

  • Post author:
  • Post category:其他


1、const member function(常量成员函数)

在类内 如果不改变数据 就写为常量成员函数

FUNCTION1()const {}

为什么要使用常量成员函数呢

for example

template<typename T>
class test
{

public:
test(double r=0,double i=0):re(r),im(i){}
double real()const  {return re;}
double imag()const  {return im;}
private:
T re,im;
}
{
const test c1(2,1);
cout<<c1.real();
cout<<c2.imag();
}

面对上述情况时 如果在类内函数real 和imag不声明为常量成员函数时 编译器会报错 也就是下述错误示例`

template<typename T>
class test
{

public:
test(double r=0,double i=0):re(r),im(i){}
double real()  {return re;}
double imag()  {return im;}
private:
T re,im;
}
{
const test c1(2,1);
cout<<c1.real();
cout<<c2.imag();
}

2、参数传递pass by value vs pass by reference(to const)

如果是pass by value 则是传递字节 在字节数较多的时候 比较浪费时间

如果是pass by reference 则是引用,底层就是指针 传递参数。 速度很快

在实际编程中尽量使用引用进行参数传递 而不要使用值传递

如果不希望改变参数的值 写为 const test&

如果会对传入的参数改变 则写为 test&

3、返回值传递return by value vs return by reference (to const)

引用形式 test& 函数名

值返回形式 函数类型 函数名

4、friend(友元)

(1)自由取得friend的private成员 friend可以直接拿private的值 如果不是friend则需要其他函数作为中间媒介 间接拿取,会导致效率比较低。

(2)相同类的各个对象互为friend友元

5、数据(data)的获取等级 最好设置为 private

6、什么时候可以不可以用引用

函数内部 声明了一个新对象 在结束时自动释放



版权声明:本文为weixin_47493488原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。