美文网首页
Boolan-1-4 参数传递与返回值

Boolan-1-4 参数传递与返回值

作者: FAN_Z | 来源:发表于2017-07-20 19:19 被阅读0次

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

const: 不改变数据的内容

2. 参数传递 pass by value 和 pass by reference

pass by value:

3. friends 友元

相同class的各个objects互为友元

4. const 的引用

我们可以把引用绑定到const对象上,就像绑定到其他对象上一样,称之为对常量的引用,与普通引用不同的是,对常量的引用不能被用作修改它所绑定的对象:
eg.
一个正确的操作:
const int c1 = 1024 ;
const int &r1 = c1 ;

而若:
r1 = 42 ; // 错误, r1是对常量的引用
int &r2 = ci ; //错误,试图让一个非常亮引用只想一个常量对象

5. pass by value 和 pass by reference

缺省条件下,c++都是以pass by value形式传递函数参数的,而值传递的参数,编译器知道这个参数收到保护,不会修改其值,实际上修改的都是通过拷贝构造函数另外创建的参数副本,当函数返回时还要调用相应的析构函数析构参数副本,这可能使得pass by value方式传递参数变成低效率的操作,不仅仅如此,pass by value还会造成“对象的切割”,当一个派生类derived class对象以by value 方式传递并被看作为一个基类basic class对象时,基类的拷贝构造函数会被调用,这时派生类对象的特化属性都被切割掉了,只剩下一个基类对象,因此调用的函数都会是基类的函数(与派生类一点关系都没有了),但引用传递就不会出现上面的俩种现象,因为pass by reference通常意味真正传递的是指针

因此

1:尽量用pass by reference to const 来代替pass by value ,因为前者比较高效,并且可以避免切割问题;

2:对于内置类型以及STL的迭代器和函数,最好采用pass by value 比较恰当

相关文章

  • Boolan-1-4 参数传递与返回值

    1. const member function (常量成员函数) const: 不改变数据的内容 2. 参数传...

  • jna对结构体、指针、引用、拷贝参数传递的使用

    虽然之前也用过jna,但是对于[结构体]的传递、指针参数数与返回值、引用参数与返回值、拷贝变量传递使用没有总结。 ...

  • 参数传递与返回值

    参数传递与返回值 写法的注意事项: 关于参数的传递:尽可能的pass by reference (to const...

  • Swift--函数

    使用函数 func 函数名(参数列表)->返回值类型 {语句组return 返回值} 传递参数 未使用外部参数名 ...

  • 函数

    函数初识 函数的参数 函数的多个参数 可变参数 参数传递 函数的返回值 函数的多返回值 return语句 函数中变...

  • 3.2高阶函数

    资料整理:JavaScript设计模式与开发实践 高阶函数:函数可以作为参数被传递或作为返回值输出。 函数作为参数...

  • 【golang】函数的使用

    一.无参数无返回值函数 运行结果: 二.有参数无返回值,可以传递一个或多个参数 运行结果: 三.不定参数 1.只有...

  • 函数

    参数与返回值 无参数 一个参数 可变参数 无返回值 多个返回值 带外部参数名的 带默认值的 常量参数与变量参数 函...

  • 高质量C++编程指南 ----函数设计

    6.函数设计 函数接口的两个要素是参数和返回值。C 语言中,函数的参数和返回值的传递方式有两种:值传递(pass ...

  • go 语言函数

    go 语言函数 函数定义格式: 不同形式的函数定义: 无返回值 有一个返回值 有多个返回值 参数传递, 传递一个函...

网友评论

      本文标题:Boolan-1-4 参数传递与返回值

      本文链接:https://www.haomeiwen.com/subject/exbqkxtx.html