essential c++第二章读书笔记

目录

2.1基础的构建函数,

2.2函数调用

2.3提供默认参数值

2.4局部静态对象 

2.5声明一个inline函数

2.6重载函数

2.7template模板

2.8函数指针

2.9头文件


2.1基础的构建函数,

不难

2.2函数调用

主要是讲传值和传址

int a=b,b的值给a

int&a=b  a是b的化身,两者的地址相同

int *a=b,b的地址给了a,a是b的地址,*a才是b的值,如果直接&b是b的地址

2.3提供默认参数值

函数参数值

2.4局部静态对象 

函数结束后不释放

2.5声明一个inline函数

inline函数的作用很简单针对于对于那些直接复制代码比调用更简单的情况

构建也只需要在函数类型前加上inline 如

inline int max(int a,int b)

{

return (a > b ? a : b);

}

2.6重载函数

简单来说就是同名函数有不同的功能

如inline int max(int a,int b) 
{
    return (a > b ? a : b);
}
inline float max(float a, float b)
{
    return(a > b ? a : b);
}
inline string max(string a, string b)
{
    return(a > b ? a : b);
}

调用时会自动根据参数列表来选择对应的函数,同名函数但是返回值和参数列表不同

如max(x,y)x,y可以是上述三种类型的任意一种

跟重载运算符<<差不多,<<可以输出各种形式的数据

2.7template模板

目的是简化代码看例子

可以把2.6中的代码简化成

template <typename T>  //固定模板,可以编译器可以根据提供的参数来确定T
inline T max(T a, T b) 
{
    return (a > b ? a : b);
}

一次定义接下来无论你是用int类型还是float或者string类型都只要直接套模板

比如cout<<max(x,y)(这里就可以通过你定义的x,y的类型编译器自动选择对应的模板如int x,float x,string x等等)

2.8函数指针

简单的来说就是一个指向函数入口的指针

作用就是可以当作参数传入函数,以代替函数名

如一个函数指针int (*p)(int a,int b) 黄色部分要用括号,以区分定义函数

例子

  1. process(x, y, min);
  2. process(x, y, add);
  1. voidprocess(inti, intj, int(*p)(inta, intb))
  2. {
  3. cout<<p(i, j)<<endl;
  4. }
  1. 这个例子中如果不用函数指针,那么就要写两个函数
  2. 有了就可以把函数直接改传进来的函数名

补充指针函数是表示函数的返回值类型是指针

如int* max(int a)

2.9头文件

头文件是什么 ,为什么要用头文件?

头文件里面有对函数的声明,不被调用的时候不用被编译,可以在多个文件中被使用,简单来说vs允许有多个源代码,如果有多个源代码需要使用同一个函数就需要不断声明,如果需要声明的函数过多,但是这样不仅麻烦而且难以记忆,于是我们可以把它们都放在头文件中,需要用到时用include一次性全部调用。

如#include "math.h", 在调用头文件是只是把这行代码简单的换成了头文件的内容 

如何创建头文件?见我写的这篇文章(教程c++如何创建一个头文件)或下方链接

https://blog.csdn.net/m0_65018431/article/details/127370884?spm=1001.2014.3001.5502

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值