c++之头文件,基本输出,输入,名字空间,引用,内联函数,函数重载,缺省参数
文章目录
前言
学习c++之头文件,基本输出,输入,名字空间,引用,内联函数,函数重载,缺省参数
一、头文件,基本输出,输入
1.基本头文件(输出输入流头文件)
#include <iostream>//io流
c++的头文件和c语言的不太一样,但是c++兼容c语言的头文件
对比:
c++中 c语言中
<cstdio> <stdio.h>
<cstdlib> <stdlib.h>
<cstring> <string.h>
在c++中没有.h拓展名,都是在前面加c,最前面都是#include
2.标准输出输入
在c++中都是以流的形式输出和输出
标准输出cout<<
标准输入cin>>
注意箭头方向不同
例:
int main()
{
int a = 10;
int b;
cout << "nice to meet you " <<" "<< a <<endl;
//双引号里面的会原样输出,输出变量会替换成变量的值,endl是换行符
cin>>b;
//从键盘输入一个数
}
二、名字空间namespace定义,嵌套,使用
A.如何定义一个名字空间
namespace 名字空间名
相当于一个空间,限定了作用域。
例:
namespace student
{
1.定义变量
int a;
2.定义常量
const int a;
3.定义结构体
struct student
{
int age;
char name[10];
}
4.定义函数
void show()
{
cout<< "你是大帅比!"<< endl;
}
}
B.嵌套:名字空间可以嵌套
namespace da
{
int age;
void show()
{
cout<< "你是大帅比!"<<endl;
}
namespace xiao
{
int id;
}
}
C.使用:
第一种:全部引用
using namespace da;
第二种:部分引用
using namespace::age;
第三种:使用域调用
int main()
{
xiao::show();
}
补充:引用空间小
using namespace da::xiao;
int main()
{
在使用的地方外面使用using namespace 名字空间名
}
三、引用:给变量取别名
1.不使用引用
void swap(int a,int b)
{
int temp;
temp = a;
a = b;
b = temp;
}
上面只是交换了形式参数,实际main函数里面的参数没有改变,
形式参数只有在调用函数的时候,才会在内存开辟一个空间,
定义两个临时变量来进行操作;
而以前c语言的方法是传地址;
2.使用引用
void swap(int& a,int& b)
{
int temp;
temp = a;
a = b;
b = temp;
}
在这个demo中,相当于给传进来的第一个参数取别名a,第二个取别名b,
相当于外号一样,别人叫大帅比是你,别人叫帅哥也是你,
大帅比是你本来的名字,相当于实际参数,
帅哥是取的别名,但是实际上还是你
**************************引用和指针的区别(面试必会):
引用必须初始化,指针不一定
引用不占用内存空间,指针占用内存空间
引用一旦初始化就不能修改,指针可以改变指向
有指针的引用,没有引用的指针
有空指针,没有空引用
四、内联函数
内联函数:在返回值类型前面加inline ,例如 inline void show(){}
作用:在c++中,某个函数被频繁的调用,就需要不断的出栈入栈,加inline内联函数,
会直接把inline的函数拷贝到调用的地方,就不需要跳转到main函数外面的函数
去运行。减少消耗(以空间换时间的做法);
1. void show()
{
cout<< "你是大帅比"<<endl;
}
运行两千万次:大约0.003秒
2. inline void show()
{
cout<< "你是大帅比"<<endl;
}
运行两千万次:大约0.001秒
3.如何查看运行时间:time ./a.out
4.限制:内联函数中不能有循环,不能有switch case
行数一般小于10行,大多在5行左右,
如果达不到内联的要求,尽管加了inline,也不会按照内联处理
注意:c++类中,函数默认内联(达不到要求也不会内联)
五、函数重载
定义:在同一作用域下,函数名相同,参数列表不同
参数列表不同分为:
个数不同:
顺序不同;
类型不同;
作用:减少用户的调用复杂性
调用一个函数实现不同效果
减少函数名的数量,防止名字污染
例子;
1.个数不同
void show(int a)
void show(int a,int b)
2.顺序不同
void show(int a,double b)
void show(double a,int b)
3.类型不同
void show(int a)
void show(double a)
注意:返回值类型不同,其他相同不构成重载
int show(int a)
void show(int a)
这个不构成重载
特殊重载:
const int show()
int show()
这个构成重载
六、缺省参数
就是在定义函数的时候,给形式参数一个默认值
class person
{
public:
int add(int a=10,int b=20)
{
cout<<a<<b<<endl;
}
}
int main()
{
add();
此时,我不给函数传入实参时,系统就会用定义的时候赋的初始值,
结果打印出来是10,20
}
总结
有点懒不想写