栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【C++读书笔记】第一章——命名空间和缺省参数

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【C++读书笔记】第一章——命名空间和缺省参数

前言

✨笔者也仅是大一萌新,写博客为了记录和巩固知识✨

殺赠人玫瑰,手留余香,欢迎各位读者进行交流和建议殺

能与大家一起学习,一起进步是我的荣幸

爛如果这篇文章有帮助到您,还请留个赞支持一下哦爛


目录:
  1. 什么是C++
  2. C++的关键字(基于C++98版本)
  3. 命名空间
    • 为什么存在命名空间?
    • 使用命名空间作用域
    • 命名空间嵌套释放
  4. 缺省参数/默认参数
    • 全缺省
    • 半缺省
    • 缺省参数的实际用法
    • 缺省参数的声明和定义
    • 最后
 1.什么是C++

C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机, 20世纪80年代, 计算机界提出了OOP(objectoriented programming:面向对象)思想,支持面向对象的程序设计语言应运而生。
1982年,Bjarne Stroustrup博士在C语言的基础上引入并扩充了面向对象的概念,发明了一种新的程序语言。为了表达该语言与C语言的渊源关系,命名为C++。因此:C++是基于C语言而产生的,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行面向对象的程序设计。

 2.C++的关键字(基于C++98版本)

C++总计63个关键字,拥有C语言32个关键字,笔者将会在之后的博客中进行部分重要关键字讲解

asmdoifreturntrycontinue
autodoubleinlineshorttypedeffor
booldynamic_castintsignedtypeidpublic
breakelselongsizeoftypenamethrow
caseenummutablestaticunionwchar_t
catchexplicitnamespacestatic_castunsigneddefault
charexportnewstructusingfriend
classexternoperatorswitchvirtualregister
constfalseprivatetemplatevoidtrue
const_castfloatprotectedthisvolatilewhile
deletegotoreinterpret_cast
3.命名空间 樂为什么存在命名空间?

C语言中我们一定会遇到这种问题,当定义的标识符过多(或者用了同函数名)时,我们可能会出现重定义的情况,在C++中使用namespace解决了这个问题,命名空间隔离的是命名冲突,不影响生命周期。相同命名空间会合并在一起

樂使用命名空间作用域:

下图中,我们可以发现,在a被定义过的情况下,我们使用namespace定义了一个命名空间域AA,此时当我们使用AA::a(格式:命名空间名::成员名)时就能够拿到命名空间中所定义的值,命名空间里面可以包含:变量、函数、类、typedef、#define,但是同一个域中也不能有同名变量

另外,"::"是C++中的域作用限定符,它的左边一般放类名称,后面一般是该类的成员名称,当::左边没有类时,它就会在全局变量中找我们所定义成员。

樂命名空间嵌套释放
嵌套

如下图,我们在AA的命名空间域中又定义了一个命名空间,此时我们要用A中的a就只需要再加一个域进去就可以输出

另外,在c++中增加了类,于是有了流提取cin和流插入cout的输入输出方法,用法如下(endl是换行):

cin和cout还能自动读取数据的类型,而scanf和printf需要自己标明数据类型

释放

关于命名空间的释放,我们来看下面的例子:

此时我们不用AA的命名空间域则无法使用变量b和A中的变量

我们可以进行如下操作不使用AA的命名空间域(当然也可以继续使用):

不过我们释放命名空间域时,会把整个作用域放开,难免会出现重定义的情况,所以我们可以只放命名空间域的指定变量,该命名空间域的其他变量还是无法直接使用:

拓展流提取和流插入

1."<<“和”>>"分别是流插入运算符,流提取运算符,它们也是位移操作符

2.实现hello world的三种方式:

方法一:

直接释放std,不过有可能使用到标准库中的函数(影响也不大)

方法二:

使用作用域,过于麻烦

方法三:

需要什么释放什么

4.缺省参数/默认参数

缺省参数是声明或定义函数时为函数的参数指定⼀个默认值,当调用时没有传参就会使用默认值,传了参就会使用传参值

全缺省

函数的形参全都具有默认值,指定传参只能按顺序传,如Test2中我们只能abc依次指定传参,无法直接给b或者c传参

類半缺省

函数的形参不是全部具有默认值,此时不具有默认值的参数必须要传一个实参进去,半缺省必须是从右往左缺省,并且要是连续的

類缺省参数的实际用法

在我们使用顺序表或者栈时,进行动态内存开辟一般操作都是用三目操作符,而使用缺省参数可以帮助我们简化,在初始化时就进行第一次空间开辟,并且可以指定第一次开辟的大小

缺省参数的声明和定义

缺省参数不能在函数声明和定义中同时出现

其一般情况是声明缺省,定义不缺省

如:

//Test.h
void Test(int a = 10);
//Test.c
void Test(int a = 20);
//此时,如果传了参还能够使用,如果没有传参,那么编译器就无法确该用哪个缺省值,所以一般是声明缺省,定义不缺省
//Test.h
void Test(int a = 10);
//Test.c
void Test(int a);
類最后

缺省值必须是常量或者全局变量

C语言不支持缺省参数(编译器不支持)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/849251.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号