博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【C++】C++自学旅程(3):函数与预处理
阅读量:4706 次
发布时间:2019-06-10

本文共 1362 字,大约阅读时间需要 4 分钟。

  C++当然也是有函数的,而且跟C基本一致,但增加了很多新的特性。关于函数的定义、声明、调用等跟C一致的内容我就不说了,下面只记载一下学到的新东西。

一、函数重载

  简单的说,就是函数名相同、函数参数表不同(参数类型或者个数不同)的几个函数构成重载,系统可根据参数自动判定调用哪个函数。如:

int max(int a, int b){    ......}double max(double a, double b, double c){    ......}......

  但注意,函数类型并不是决定函数重载是否正确的条件,也就是说参数表相同,函数名相同,只有函数类型不同,是不能正确构成重载的,如下面就是错误的:

int max(int, int){    ......}double max(int, int){    ......}

  系统无法知道到底调用哪一个。

所以,函数重载:

1、函数名相同;2、形参个数或形参类型至少有一个不相同。

 

二、带默认参数的函数

int add(int a=10, int b=10, int c=10){    return a+b+c;}

  这样,如果调用时是:add(),得出的结果就是30,若是add(2),那么得出结果是22,以此类推……

  只是要注意的是,默认形参只能放在靠右,如以下几种是错误的:

int add(int a=1, int b=2, int c);int add(int a=1; int b, int c=3);......

  另外值得一提的是,带默认参数的函数和函数重载不要一起用,容易搞混。

 

三、内联函数

  inline 函数类型 函数名(形参列表)  用这种方法来减少频繁调用函数的开销。

  要求:

  不能包括复杂的控制语句,如循环语句和switch语句;不能包括递归调用语句;不能有太多的函数体语句。

  不满足要求的会按照一般函数调用执行。

 

四、嵌套调用和递归调用

  旧东西,多做做题可能会理解得好一点。

 

五、预处理

  预处理包括:宏定义、文件包含。需要讲的有以下两点:

  1、文件包含中,< > 和 " "的区别:

< >,系统会去存放C++的系统目录中去寻找,没有找到就会报错,适合系统提供的库;" "中可以写绝对路径,如果没有写绝对路径,系统会先去当前目录找,如果没有找到则去系统目录,还没有找到就报错,适合自己写的头文件。

2、条件编译

满足条件编译部分,主要使用于头文件中避免因头文件的多次引用而造成对变量的重复定义。主要有以下几种形式:

#ifdef 标识符    程序段1#else    程序段2#endif

  前面#define了标识符则编译程序段1,否则编译2。

  ②

#ifndef 标识符    程序段1#else    程序段2#endif

  与上一种相反。

  ③

#if 表达式    程序段1#else    程序段2#endif

  如字面。

  使用条件编译可以使目标程序变小,运行时间变短。条件预编译命令问题或算法的解决方案增多,有助于选择合适的解决方案。

 

转载于:https://www.cnblogs.com/HappyCtest/p/5165620.html

你可能感兴趣的文章
kivy学习三:打包成window可执行文件
查看>>
兄弟连PHP培训教你提升效率的20个要点
查看>>
【快报】基于K2 BPM的新一代协同办公门户实践交流会
查看>>
关于MySQL的行转列的简单应用
查看>>
Queue 队列的用法
查看>>
CDM常用命令
查看>>
游戏开发中常用的设计模式
查看>>
Linux 中/etc/profile、~/.bash_profile 环境变量配置及执行过程
查看>>
JAVA:图形之利用FontMetrics类居中
查看>>
使用rsync同步目录
查看>>
[读码时间] for循环遍历设置所有DIV块元素背景色为红色
查看>>
网页调用迅雷下载文件
查看>>
Python 调用 Shell命令
查看>>
POJ 1159 Palindrome(最长公共子序列)
查看>>
ubuntu下安装fcitx五笔输入法
查看>>
责任链模式(chain of responsibility)
查看>>
[转载]java多线程学习-java.util.concurrent详解(一) Latch/Barrier
查看>>
ionic - 运行起来
查看>>
Shell 输入/输出重定向
查看>>
数据结构与算法分析(C++)读书笔记
查看>>