c++入门知识点讲解 您所在的位置:网站首页 函数的知识点讲解视频教程 c++入门知识点讲解

c++入门知识点讲解

2024-07-10 03:38| 来源: 网络整理| 查看: 265

本文讲解大纲:

1.c++的第一个程序                                                                                                                             c++兼容c语言中的大多数语法,所以c语言中可以实现的,初学者经常输出的hello word依旧可以运行。在c中需要把定义文件代码后缀写为.c,而c++中则需要将后缀改为.cpp。

在c语言中我们输出hello word如下图:

而在c++中有自己的一套输入输出方式,严格来说在c++中应该按如下图来书写代码:

2.命名空间

2.1 namespace的价值

在c/c++中,变量,函数,和类都是大量存在的,而这些的名称都将存在于全局作用域中,可能会导致很多冲突。而使⽤命名空间的⽬的是对标识符的名称进⾏本地化,以避免命名 冲突或名字污染,namespace关键字的出现就是针对这种问题来解决的。

如上图编译会报错,因为rand是包含于头文件#include中的,以前定义为“函数”。这是一个c语言项目中命名冲突普遍存在的定义。而c++中引入namespace是为了更好的解决这类问题,如下图所示:

2.2 namespace的定义

(1)定义命名空间,需要使⽤到namespace关键字,后⾯跟命名空间的名字,然后接⼀对{}即可,{}中 即为命名空间的成员。命名空间中可以定义变量/函数/类型等(如下图所示)。

(2)namespace本质是定义出⼀个域,这个域跟全局域各⾃独⽴,不同的域可以定义同名变量。

(3)C++中域有函数局部域,全局域,命名空间域,类域;域影响的是编译时语法查找⼀个变量/函数/ 类型出处(声明或定义)的逻辑,所有有了域隔离,名字冲突就解决了。局部域和全局域除了会影响 编译查找逻辑,还会影响变量的声明周期,命名空间域和类域不影响变量声明周期。

(4)namespace只能定义在全局,并且还可以嵌套使用。

(5)同名namespace在多个文件中会被认为是同一个namespace,不会发生冲突。

(6)C++标准库都放在⼀个叫std(standard)的命名空间中。

2.3 命名空间的使用

我们需要使用命名空间的中定义的变量/函数,有三种方法:

(1)指定命名空间的访问,项目中比较推荐这种方式。

(2)using将命名空间中某个成员展开,项目中不产生冲突的成员比较推荐使用这种方式。

(3)将命名空间全部展开,这个不推荐使用在项目中,应为可能包含很多冲突的发生,风险很大,但是日常小程序练习为了方便推荐使用。

3.c++输入&输出

(1)是InputOutputStream的缩写,是标准的输⼊、输出流库,定义了标准的输⼊、输 出对象。

  (2) std::cin 是istream类的对象,它主要⾯向窄字符(narrowcharacters(oftypechar))的标准输 ⼊流。

  (3)std::cout 是ostream类的对象,它主要⾯向窄字符的标准输出流。

(4)std::endl 是⼀个函数,流插⼊输出时,相当于插⼊⼀个换⾏字符加刷新缓冲区。

(5)是流提取运算符。(C语⾔还⽤这两个运算符做位运算左移/右移)

(6)使⽤C++输⼊输出更⽅便,不需要像printf/scanf输⼊输出时那样,需要⼿动指定格式,C++的输⼊ 输出可以⾃动识别变量类型(本质是通过函数重载实现的,这个以后会讲到),其实最重要的是 C++的流能更好的⽀持⾃定义类型对象的输⼊输出。

4.缺省参数

(1) 缺省参数是声明或定义函数时为函数的参数指定⼀个缺省值。在调⽤该函数时,如果没有指定实参 则采⽤该形参的缺省值,否则使⽤指定的实参,缺省参数分为全缺省和半缺省参数。(有些地⽅把 缺省参数也叫默认参数)

(2)全缺省就是全部形参给缺省值,半缺省就是部分形参给缺省值。C++规定半缺省参数必须从右往左 依次连续缺省,不能间隔跳跃给缺省值。

(3)带缺省参数的函数调⽤,C++规定必须从左到右依次给实参,不能跳跃给实参。

(4)函数声明和定义分离时,缺省参数不能在函数声明和定义中同时出现,规定必须函数声明给缺省值。(重点)

5.函数重载

C++⽀持在同⼀作⽤域中出现同名函数,但是要求这些同名函数的形参不同,可以是参数个数不同或者 类型不同。这样C++函数调⽤就表现出了多态⾏为,使⽤更灵活。C语⾔是不⽀持同⼀作⽤域中出现同 名函数的。

(1)参数类型相同

(2)参数个数不同

(3)参数类型顺序不同

(4)返回值不同不能作为重载体条件,因为调用时无法区分。

(5)下⾯两个函数构成重载 , f() 但是调⽤时,会报错,存在歧义,编译器不知道调⽤谁(如下图)

6.引用

6.1引用的概念和定义

引⽤不是新定义⼀个变量,⽽是给已存在变量取了⼀个别名,编译器不会为引⽤变量开辟内存空间, 它和它引⽤的变量共⽤同⼀块内存空间。

类型& 引⽤别名=引⽤对象;(引用的用法)

6.2引用的特性

(1)引⽤在定义时必须初始化。

(2)一个变量可以有多个引用。

(3)引⽤⼀旦引⽤⼀个实体,再不能引⽤其他实体。

6.3引用的使用

(1)引⽤在实践中主要是于引⽤传参和引⽤做返回值中减少拷⻉提⾼效率和改变引⽤对象时同时改变被 引⽤对象。

(2)引⽤传参跟指针传参功能是类似的,引⽤传参相对更⽅便⼀些。

本文到此结束,如果觉得好的话,点赞加收藏,谢谢您的观看!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有