前言
相比C语言,C++新增了许多特色语法,也是面试和考试的重点。
本文必须掌握的【七大知识点:C++的输入cin和输出cout | 命名空间namespace | 缺省参数(默认值) | 函数重载 | 内联inline | nullptr | 引用&】
通俗易懂,附带案例
一、C++的输入cin和输出cout
iostream是Input Output Streaam的缩写,是【标准的输入,输出流库】,定义了【标准的输入,输出对象_cin和cout】—— 被封装在std标准命名空间
namespace std;【C++标准库_cin/cout/endl都属于C++标准库】都放在这个叫【std命名空间】中(这个可以先不用管,第二点有讲)
[1].std::cin 是 istream类的对象,他主要面向窄字符的【标准输入流_即读取,跟scanf差不多】_然后通过流提取>>进行提取,提取到std::cin中
[2].std::cout 是 ostream类的对象,他主要面向窄字符的【标准输出流_即打印,跟printf差不多】然后通过流插入<<进行插入,插入到std::cout中
[3].std::endl 是一个函数,流插入输出时(相当于插入【一个换行字符 加 刷新缓冲区】)
[4].【<<是流插入】运算符,【>>是流提取】运算符
C++输入输出更方便,不像scanf/printf,需要手动指定格式,
C++输入输出可以【自动识别变量类型_本质通过函数重载实现】
#include <iostream>
namespace std;
int main(void)
{
char a = 'x';
int b = 0;
double c = 0.0;
//【自动识别类型】
//【这些都被封装到std命名空间中,所以要通过-作用域限定符(后面有提到)指定找到】
//将内容通过【标准输入流cin】和【流提取>>提取到变量中】
std::cin >> a >> b >> c;
//将内容通过【流插入<<插入到标准输出流cout中】
std::cout << a << b << c << std::endl; //std::endl为一个换行字符 加 刷新缓冲区
return 0;
}
二、命名空间namespace
[1].namespace的价值
在C/C++中,【变量,函数 && 类】都是大量存在的,其名称将都【存在于全局作用域】中,可能会导致冲突(即同名了)
使用【命名空间namespace关键字】的目的:是【对标识符的名称进行本地化】,以避免命名冲突 || 名字污染
[2].namespace的定义
本质是定义一个域(这个域跟全局域各自独立)_域的作用:不同的域可以定义同名变量(每个域都起到隔离作用)
定义命名空间,需要使用到【namespace关键字,后面跟命名空间的名字_然后接一对{}即可“{}后面不用跟分号;”】- {}中即为命名空间的成员_命名空间里面可以定义变量/函数/类型等
namespace TEST
{
//定义的变量
int rand = 10;
//定义的函数
int Add(int a,int b)
{
return a + b;
}
//定义的类型
struct Node
{
int data;
struct Node* next;
}
}
int main(void)
{
//这里默认是【访问的是-全局的rand函数指针】
printf("%p\n",rand);
//这里通过作用域限定符'::'指定TEST命名空间中的成员(表明了隔离作用_不会因为同名而出现问题)
printf("%d\n",TEST::rand);
return 0;
}
[3].C++域有:
函数局部域,全局域,命名空间域,类域
域影响的是:编译时语法查找一个【变量/函数/类型出处的逻辑】,还会影响【变量的生命周期(命名空间域 && 类域-不影响变量的生命周期)】
[4].namespace【只能定义在全局】,当然他【还可以嵌套定义】
namespace TEST
{
namespace zs
{
int rand = 1;
int Add(int a,int b)
{
return a + b;
}
}
namespace ls
{
int rand = 2;
int Add(int a,int b)
{
return (a + b) * 10;
}
}
}
int main(void)
{
//通过作用域限定符'::'向里面找成员,嵌套的也是同理
//【作用域限定符::的-左边是(命名空间的名字),右边是(命名空间的成员)_通过这样就能找到想要的成员了】
printf("%d\n",TEST::zs::rand);
printf("%d\n",TEST::ls::rand);
printf("%d\n",TEST::zs::Add


979

被折叠的 条评论
为什么被折叠?



