C++的第一节入门

C++

第一节:入门

 

 

1C++命名空间

C++中解决了C语言中的一些名字的命名冲突,导致

程序崩溃,或者运行失败。命名空间很好的解决了

这些问题。

2命名空间的定义:

在定义命名空间时需要用到namespace这个关键字

后接命名空间的名字,然后接大括号,其中为命名空间的成员。

eg

 

正如图所示,命名空间中可以定义变量,数组,还有函数。

 

在同一个工程中允许存在多个名称相同的命名空间,

编译器最终会将其合成为一个命名空间,但是在两个相同名字的

命名空间中,不能同时定义一个相同名称的变量或函数。

3:命名空间的使用

*假命名空间和作用域限定符“::”。

 

*using将命名空间中的成员引入

 

相当于定义了一个全局变量

*如果用这个空间中的成员次数较多可以用using直接将

命名空间引入。

 

 

 

4C++的输入与输出

C++中输入输出与C语言有着很大差异,虽然也可以

printf输出,但是在c++中有了更为简便的输出输入。

*用“cout<<123<<change word<<endl;”;

这条语句就可以进行输出

cin>>  ;”;

这条语句进行输入;

C++的输入输出中不需要再定义繁琐的数据格式控制

,编译器直接会帮你实现。

*在使用标准输入输出时必须使用包含<iostream>的头文件以及std标准命名空间

因为在C++中的头文件的一些东西放在了命名空间中。

所以在C++中的头文件最好使用这个。

 

 

 

5:C++缺省函数

缺省函数是声明或定义函数时为函数的参数指定一个默认值

就是当函数没有传参时用的是默认值,传参时用的实参。

*全缺省参数

 

就是没有传参

 

*半缺省参数

 

要在定义默认参数时从右向左定义,不能隔着给。

Eg

 

而却缺省参数不能在函数声明与定义中同时出现。

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

6:函数重载

类似于一个词的多重含义,“谁也赢不了”

*函数重载的概念

C++中可以允许在同一作用域中有重名的函数

(函数的形参列表(餐宿个数,以及参数类型)必须不同)

eg:

 

在调用函数时不能出现参数格式模糊的参数。

*名字修饰

在函数的编译过程中会将函数的名字进行重新改变。

例如C语言中,在预编译过程中将函数前面加上下滑线就是重新编写名称。

*extern C

C++的工程中可能需要将某些函数按照C的风格来编译

,要加载函数前加externC”。

7:引用

*引用概念

引用不是新定义一个变量而是给已存在的变量取了个别名,它

和它引用的变量共同用一块空间。

eg:

Int a=10;

Int& ra=a;

 

其中两个的地址是一样。

*在这里&符号不是解引用而是类型标识符。

引用的声明方法:类型标识符&引用名=目标变量名

*引用特性

在声明引用时,必须同时对其进行初始化。

Eg

Int a=10;

Int& ra=a;

一个变量可有多个变量

引用一旦引用了一个实体,就再不能引用其他实体

*常引用

当目标变量为常量时需要用const加在引用前

引用不能直接引用一个常量,类似于int&b =10;为错误。

在引用时类型要一致

*使用场景

引用可以做*参数*做返回值*

当用引用做返回值时,必须在函数外部定义好一个引用

*传值,引用效率比较高

*引用和指针的不同点

引用定义时必须初始化,指针不需要

引用只能在初始化时引用一个实体,而指针可以任意指向

没有NULL的引用,有空指针

sizeof中含义不同:引用是其类型大小,而指针是地址空间的大小

当引用+1的时候是实体+1;指针+1是向后偏移一个类型大小

有多级指针无多级引用

访问实体不同,指针要解引用,引用直接用

引用比指针安全

8内联函数

*概念

Inline修饰的函数叫做内联函数,在编译期间编译器会将函数展开,

替代函数体。

这样一来节省了时间,节省了调用函数,但是增大了空间。

*特性

Inline是以空间换时间的做法,当代码很长或者是递归时不用。

Inline对于编译器是一个建议,且不建议声明和定义分离,分离会导致链接错误

9:宏的优缺点

优点

*增强代码的复用性

*提高性能

缺点

*不方便调试(在预编译阶段进行了替换)

*导致代码的可读性差,可维护性差,容易用错

*没有类型安全的检查

*用内敛函数/const代替宏

10auto关键字

*auto现在被作为一个新的类型指示符来指示编译器。

*eg

Auto a=10

这里auto就是int

Auto不是一种类型的声明而是类型声明时的占位符,在

编译期间会替变成实际类型,

*auto的使用规则

Auto不能做函数参数

Auto不能直接用来声明数组

11:范围for

For的循环后的括号由冒号分为两部分:第一部分用于迭代变量

第二部分是范围。

Eg

void TestFor()

{

int array[] = { 1, 2, 3, 4, 5 };

for(auto& e : array)

  e *= 2;

for(auto e : array)

  cout << e << " ";

return 0;

}

*范围for的使用条件

For循环迭代的范围必须是确定的

12:指针空值nullptr

nullptr表示空指针,在C++中是作为新的关键字引进的。

为了提高健壮性,以后就用nullptr表示空指针。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值