c++学习过程中与c的比较(基于西北工业大学mooc)

程序中数据的表示

数据类型

long 4字节
long double 增加了double的精度
bool 1字节 0或1

常量与变量

字面值(常量):112141'A'\x1234

以下说明均针对于字面值常量

八进制:0开头

十六进制:0x或者0X开头

浮点型常量默认double,如果要表示float要在末尾加上f或者F

字符:\ooo三位八进制数字表示字符

\xoo两位十六进制数表示字符

const + 变量类型 + 变量名 = 数值,不可再次更改

输入与输出

cpp中主要采用cincout进行输入输出以及相关的格式控制,但是对于格式控制比较繁琐,可以使用scanfprintf

函数

内联函数

cpp中可以在函数的声明前面加上inline,使得函数在编译过程中即成为内联函数,提升整体效率。

但是内联函数无法实现过于复杂的功能,因此规定内联函数内不使用循环语句和switch语句

函数的默认参数

函数支持默认参数,为形参指定默认值,默认参数只能声明一次

1
2
3
4
5
6
7
8
9
int add(int a=5,int b=6){
return a+b;
}
int main(){
add(3,4);//3+4
add(4);//4+6
add();//5+6
return 0;
}

默认参数自右向左设置,如果某一个参数设置了默认值,则它的右侧所有参数都必须有默认值

默认值必须为常量或者全局变量或者他们构成的表达式或者函数

函数重载

cpp支持函数重载,也就是允许在同一个域中使用多个相同函数名的函数,但是要求函数在参数类型或者个数中至少有一个不同

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

函数模板

根据上面的函数重载进行理解,就是把多个相同的函数,但是数据类型不同的用同一个函数模板表示

template<模板形参表>返回类型 函数名(函数参数){}

模板形参表形式:typename 类型名1,typename 类型名2…(typename也可以用class表示,不过一般使用typename)非空

1
2
3
4
5
6
7
8
9
10
11
12
#include<iostream>
using namespace std;
template<typename t,typename f>
t add(t a,f b){
return a+b;
}
int main(){
cout<<add(5,6.3)<<endl;//11
cout<<add(6.3,5)<<endl;//11.3

return 0;
}