【面向对象】6.函数01

函数01

实参:实际往里面传的参数

  • 空形参列表 ()/(viod)

  • 逗号隔开,必须写出类型

形参:写函数时用到的

自动对象 :形参

局部静态对象 :第一次经过对象定义语句时初始化,直到程序终止才被销毁,后续调用不会初始化,可以用来看函数的调用次数或者执行和调用相关的操作。

  • static size_t i =0
ret *= val --;
//运算之前的值乘进去,然后再自减

声明

  1. 建议变量、函数在头文件中声明,在源文件中定义。

  2. 含有函数声明的头文件应该被包含到源文件中

  3. #ifndef
    #define
    #endif
    

分离式编译

  1. CC 是c 编译器的名字,如gcc; CXX是c++编译器的名字,如g++

  2. export CC=gcc CXX=g++
    $CXX test.cpp -o a.out//

  3. .cc是扩展名,表示c++源文件

  4. CC a.cc b.cc直接编译生成可执行文件a.out;

  5. CC a.cc b.cc -o main 直接编译生成可执行文件main;

  6. CC -c a.cc b.cc编译生成对象代码a.o b.o; (-c不生成可执行文件) .o 中间代码,可以简化编译过程

  7. CC a.o b.o编译生成可执行文件a.out

  8. CC a.o b.o -o main 编译生成可执行文件main。

makefile

依赖
生成

参数传递

  1. 引用传递 形参:* * 值参 &

  2. 值传递 初始值直接拷贝

  3. 传递引用形参可以避免不必要的复制 形参:& 值参正常

  4. 引用比指针会更好用

  5. 如果实参是右值,不能为引用类型

  6. const & 可以用常量,这样就只读不写

const形参和实参

  1. void func(const int i) 可以传const也可以传变量; 但是不能又定义const int i ,又再写一个相同的函数定义Int i
  2. int &r=42 是不行的,不能用一个字面值初始化一非常量引用
  3. 普通引用不能绑定到字面值
  4. 普通引用不能绑定到const对象

数组形参

  1. 传递数组,传递的是指向数组首元素的指针
  2. 标记:
    • begin end函数
    • \0可以帮助字符数组
    • 传递数组大小
  3. int (&arr)[2] 是数组的引用 int & arr[2]是两个引用类型int数组
  4. int (*arr)[2] 是指向含有两个元素的数组的指针 *arr[2] 是两个指针的数组
  5. int *&p 引用的对象是指针

main处理命令行选项

int main(int argc, char *argv[]){...}
argv[0]保存程序的名字 而非用户输入

含有可变形参的函数

在范围for循环中使用initializer_list对象时,应该使用常量引用类型。

initializer_list对象中的元素都是常量.

返回

  1. 不要返回局部对象的引用或指针
  2. 如果希望返回对象被修改,返回常量的引用无效

感觉自己还是没有搞懂指针之类的东西,(lll¬ω¬),继续加油~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值