
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
本片文章由达内上海C++培训小编介绍c++(c++11标准)的一些入门知识。
1.命名空间
在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作 用域中,可能会导致很多冲突。
使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字 污染,namespace关键字的出现就是针对这种问题的。定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名 空间的成员。在使用命名空间时还可以用using 将变量引入或用using namespace将命名空间引入来使用。
2.c++的输入输出
在c++中使用cin(标准输入)和cout(标准输出)语句进行输入输出,他们都包含在一个iostream头文件中,要使用还用有包含他们的标准命名空间std,输出运算符"<<“和输入运算符”>>"下面来看一个求两个数和的代码。
3.参数缺省
概念:缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用该函数时,如果没有指定实参则采用该默认值,否则使用指定的实参。
参数缺省还有一种方式半参数缺省,在参数缺省时应注意:
1.半缺省参数必须从右往左依次来给出,不能间隔着给
2.缺省参数不能在函数声明和定义中同时出现(这是防止便一起去无法识别出错)
4.函数重载
概念:在同一作用域中中声明几个功能类似的同名函数,这些同名函数的 形参列表(参数个数 或 类型 或 顺序)必须不同,这就称为重载函数(注意main函数不能重载)
为什么c++支持函数重载?
编译器在运行程序时会有一个编译的过程,在这个过程中会将函数名和变量的名称进行改编。在c语言中重视将函数名加一个下划线如_Add,但由于C++要支持函数重载,命名空间等,使得其修饰规则比较复杂,不同编译器在底层的实现方式可能都有差异。
5.引用
概念:引用是为变量起了另外一个名字,引用类型引用另外一种类型,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。
须知:引用必须初始化。在定义引用时,引用已经和他的初始值绑定在一起而不是拷贝给引用。这也导致引用一旦引用一个实体就不能再引用其他实体。但是一个实体可以有多个引用。
指针和引用的区别
1、引用在定义时必须初始化,指针没有要求 ;
2. 引用在初始化时引用一个实体后,就不能再引用其他实体,而指针可以在任何时候指向任何一个同类型实体 ;
3. 没有NULL引用,但有NULL指针;
4. 在sizeof中含义不同:引用结果为引用类型的大小,但指针始终是地址空间所占字节个数(32位平台下占 4个字节);
5. 引用自加即引用的实体增加1,指针自加即指针向后偏移一个类型的大小;
6. 有多级指针,但是没有多级引用;
7. 访问实体方式不同,指针需要显式解引用,引用编译器自己处理;
8. 引用比指针使用起来相对更安;
6. auto关键字(C++11)
C++11中auto不再是一个存储类型指示符,而是作为一个新的类型 指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得。
注意:使用auto定义变量时必须对其进行初始化,在编译阶段编译器需要根据初始化表达式来推导auto的实际类 型。因此auto并非是一种“类型”的声明,而是一个类型声明时的“占位符”,编译器在编译期会将auto替换为 变量实际的类型。
7. 指针空值—nullptr(C++11)
C++11为什么不在NULL的基础上进行扩展,这是因为NULL以前就是一个宏,而且不同的编译器厂商对于NULL的实现可 能不太相同,而且直接扩展NULL,可能会影响以前旧的程序。因此:为了避免混淆,C++11提供了 nullptr,即:nullptr代表一个指针空值常量。nullptr是有类型的,其类型为nullptr_t,仅仅可以被隐式转 化为指针类型,nullptr_t被定义在头文件中。
注意:
1.在使用nullptr表示指针空值时,不需要包含头文件,因为nullptr是C++11作为新关键字引入的。
2. 在C++11中,sizeof(nullptr) 与 sizeof((void*)0)所占的字节数相同。
3. 为了提高代码的健壮性,在后续表示指针空值时建议好使用nullptr。