学习C++第4天

今天做一些C++里面专业术语的解释

用const定义常量

在c语言中定义常量通常是#define PI 3.1415926
这里面PI不是变量,没有类型,不占用储存单元。且容易出错
比如

int a=1;
int b=2;
#define PI 3.1415
#define R a+b
cout<<PI*R*R<<endl;

计算的不是3.1415*(a+b)*(a+b),而是3.14159*a+b*a+b
用C++则变为

const folat PI=3.1415926;

定义了常变量PI,他有变量的属性,有数据类型,占用存储单元,有地址,可以用指针指向。

函数的重载

通俗来讲就是用一物多用,比如<<这个运算符本来是左移运算符,但是又可以用作插入运算符,其在不同场合有不同的作用。而函数重载是一个函数多用。只用定义一个函数可以实现不同的功能比如计算两个整形数的和,两个浮点型数的和,两个长整形数的和,用c来写就需要写三个函数sum1 sum2 sum3,用重载函数可以让我们可以三个函数名都为sum,因为C++里面,系统可以自动根据实参的类型找到与之匹配的函数。注意:参数的个数和类型都可以不同,但是必须其中一个是不同的,这样系统才能辨别,函数返回值也可以不同,但是不允许参数个数和类型都相同只有返回值不同

函数模板

前面的那个例子我们可以发现,还是需要写三个函数,我们可以发现除了数的类型不同外,其他没有什么不同。所以C++就解决了这个问题,(感觉C++方便了好多有没有)提供了函数模板这个东西,让我们方便的只用写一个函数。定义函数模板的一般形式如下:

template<typename T>
通用函数定义

这里的template意思是模板,typename是虚拟的类型名,,这就把前面的整形,浮点型,常整型统一化成为了typename。注意:这只适用于参数个数相同而类型不同且函数体相同的情况。

有默认参数的函数

在函数声明时,指定r的默认值

float area(float r=6.5);

在实际调用函数时可以不给出实参area();如果不想用默认值可以通过实参给出area(7.5);有多个参数时可以只给定一部分参数的默认值,但是指定默认值的参数必须放在形参列表最右边`

float volume(float h,float r=13.3);//指定默认值的参数必须放在最右边
float volume(float r=13.3,float h);//这样是错误的。
//下面是调用函数
volume(45.6);//相当于voiume(45.6,13.3)
volume(34.2,12.9);//h为34.2,r为12.9

注意:一个函数不能既作为重载函数又作为有默认参数的函数。

变量的引用

就是别名,没啥好说的
注意:
1.&符号是引用声明符,不是取地址符,不开辟新的存储单元。2.不能建立void类型的引用,不能建立数组类型的引用。3.不能建立指向引用类型的指针变量int& *p=&a;//错误4.可以建立指针变量的引用。4.对表达式进行引用int i=5;const &a=i+3;//对表达式进行引用时必须加const
如何区别引用和去地址符?如果是int &a;这就是引用,而类似p=&a;就是去地址

内嵌函数

函数前面加个inline 就可以把函数调用换成对应的函数体

作用域运算符

由于局部变量可以屏蔽全局变量,故提供::a可以使用全局变量。

猜你喜欢

转载自blog.csdn.net/qq_41935906/article/details/82934624