• 售前

  • 售后

热门帖子
入门百科

快速走进C++天下(入门级语法)

[复制链接]
木易549 显示全部楼层 发表于 2022-1-16 14:39:15 |阅读模式 打印 上一主题 下一主题
                           

目次                    ​
什么是C++及汗青
C++关键字
 定名空间
定名空间界说
平常定名空间
嵌套的定名空间
同一个工程中答应存在多个雷同名称的定名空间
定名空间使用
错误的使用
加定名空间名称及作用域限定符
 使用using将定名空间中成员引入
使用using namespace 定名空间名称引入
std定名空间
C++输入&输出
cout
 cin
 缺省参数
缺省参数概念
 缺省参数分类
全缺省参数
半缺省参数(部分给缺省值)
函数重载
函数重载概念
函数参数个数差异
函数参数范例差异
函数参数序次差异
思索题
函数名修饰规则
extern "C"
引用
引用概念
引用的使用
引用特性
权限
权限扩大
权限稳固
权限缩小
 引用使用场景
做参数
做返回值 
 下面代码输出什么?
传值、传引用服从比力
传值、传引用传参性能比力
值和引用的作为返回值范例的性能比力
引用和指针的区别
引用和指针的差异点
内联函数
概念
Debug版本内联函数设置
 内联函数特性
口试题
内联函数缺陷
auto关键字(C++11)
auto使用细则
auto与指针和引用联合起来使用
 在同一行界说多个变量
auto不能推导的场景
auto不能作为函数的参数
auto不能直接用来声明数组
其次
基于范围的for循环(C++11)
范围for用法
范围for使用条件
指针空值


什么是C++及汗青

          C语言是布局化和模块化的语言,得当处理惩罚较小规模的步伐。对于复杂的标题,规模较大的步伐,须要高度的抽象和建模时,C语言则不符合。为相识决软件危急, 20世纪80年代, 盘算机界提出了OOP(objectoriented programming:面向对象)头脑,支持面向对象的步伐计划语言应运而生。
      1982年,Bjarne Stroustrup博士在C语言的底子上引入并扩充了面向对象的概念,发明确一种新的步伐语言。为了表达该语言与C语言的渊源关系,定名为C++。因此:C++是基于C语言而产生的,它既可以举行C语言的过程化步伐计划,又可以举行以抽象数据范例为特点的基于对象的步伐计划,还可以举行面向对象的步伐计划。
  总结:C++出现是为了补充C语言的不敷,可以说是完满C语言的;C++是C语言的超集。
         1979年,贝尔实行室的本贾尼等人试图分析unix内核的时间,试图将内核模块化,于是在C语言的底子上举行扩展,增长了类的机制,完成了一个可以运行的预处理惩罚步伐,称之为C with classes。
  C++关键字

C++总计63个关键字,C语言32个关键字。
在这里并不是把关键字都先容,而是简朴的先相识一下。以后我会常常写博客,联合具体场景具体先容。

 定名空间

          在C/C++中,变量、函数和背面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,大概会导致很多辩论。使用定名空间的目标是对标识符的名称举行本地化,以克订定名辩论或名字污染,namespace关键字的出现就是针对这种标题的。
  定名空间界说

           界说定名空间,须要使用到namespace关键字,背面跟定名空间的名字,然后接一对{}即可,{}中即为定名空间的成员。
  举个栗子:
平常定名空间

  1. <code>namespace cyq  //以cyq为命名空间的名称
  2. {
  3.         //命名空间中,即可以存变量,也可以存函数
  4.         int a = 1;
  5.         int Add(int x, int y)
  6.         {
  7.                 return x + y;
  8.         }
  9. }
复制代码
嵌套的定名空间

  1. <code>namespace cyq  //以cyq为命名空间的名称
  2. {
  3.         //命名空间中,即可以存变量,也可以存函数
  4.         int a = 1;
  5.         int Add(int x, int y)
  6.         {
  7.                 return x + y;
  8.         }
  9.         namespace wmm  //以wmm为命名空间的名称
  10.         {
  11.                 int a = 1;  
  12.                 void Swap(int x, int y)
  13.                 {
  14.                         int tmp = x;
  15.                         x = y;
  16.                         y = tmp;
  17.                 }
  18.         }
  19. }
复制代码
         留意,固然cyq和wmm两个定名空间中都有界说变量a,但是在这里并不会造成定名辩论。由于他们在差异的定名空间中,属于差异的作用域。这就克制了定名辩论或定名污染。
  同一个工程中答应存在多个雷同名称的定名空间
 


  1. <code>namespace cyq  //以cyq为命名空间的名称
  2. {
  3.         //命名空间中,即可以存变量,也可以存函数
  4.         int a = 1;
  5.         int Add(int x, int y)
  6.         {
  7.                 return x + y;
  8.         }
  9.         namespace wmm  //以wmm为命名空间的名称
  10.         {
  11.                 int a = 1;  
  12.                 void Swap(int x, int y)
  13.                 {
  14.                         int tmp = x;
  15.                         x = y;
  16.                         y = tmp;
  17.                 }
  18.         }
  19. }namespace cyq{        //int a = 10; //由于编译器会把名称雷同的定名空间归并到一起,以是在这里会和上面的a造成辩论        int b = 10;        int Sub(int x, int y)        {                return x - y;        }}
复制代码
  留意:一个定名空间就界说了一个新的作用域,定名空间中的全部内容都范围于该定名空间中。
  定名空间使用

错误的使用

  1. <code>namespace cyq  
  2. {
  3.         int a = 1;
  4.         int Add(int x, int y)
  5.         {
  6.                 return x + y;
  7.         }
  8. }
  9. int main()
  10. {
  11.         printf("%d\n", a);
  12.         return 0;
  13. }
复制代码
错误运行结果: 

定名空间使用有三种方式:
加定名空间名称及作用域限定符

  1. <code>namespace cyq  
  2. {
  3.         int a = 1;
  4.         int Add(int x, int y)
  5.         {
  6.                 return x + y;
  7.         }
  8. }
  9. int main()
  10. {
  11.         printf("%d\n", cyq::a);
  12.         return 0;
  13. }
复制代码
运行结果:
         
 使用using将定名空间中成员引入

  1. <code>namespace cyq  
  2. {
  3.         int a = 10;
  4.         int Add(int x, int y)
  5.         {
  6.                 return x + y;
  7.         }
  8. }
  9. using cyq::a;
  10. int main()
  11. {
  12.         printf("%d\n", a);
  13.         return 0;
  14. }
复制代码
运行结果:

使用using namespace 定名空间名称引入

  1. <code>namespace cyq  
  2. {
  3.         int a = 10;
  4.         int Add(int x, int y)
  5.         {
  6.                 return x + y;
  7.         }
  8. }
  9. using namespace cyq;
  10. int main()
  11. {
  12.         printf("%d\n", a);
  13.         return 0;
  14. }
复制代码
运行结果:

std定名空间

             通过以上就可以明确为什么我们写C++步伐为什么总是写:using namespace std; 现实上C++标准定名都存在一个叫std的定名空间中,比如我们常常使用的:cout、cin。
           由于我们不能直接去访问。以是将定名空间睁开就行了。不外使用using namespace std; 会让std这个定名空间失去了代价,以是在大工程项目中会接纳using std::cout;  using std::cin;的写法。不外我们在平常训练就使用using namespace std; 就好了。
  1. <code>#include<iostream>// i表示输入,o表示输出,stream表示流
  2. using namespace std;
复制代码
C++输入&输出

cout

   
    <strong>     

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作