C++对C语言中设计不合理的地方的改进
C++98相关的知识点 C++98中进行过对C语言的语法做成模板的方式,包括头文件时可以 .h
98以后这种方案就被抛弃了
C++11相关的知识点
关键字:c99有32个。C++98继承C语言,有63个关键字,
C++ 对C语言有那些拓展?
扩充了面向对象的概念,高度抽象化
C++对C语言的增强
命名空间(namespace)的概念,作用
作用:解决命名重名(名字污染)的冲突,可以把所有可能会发生命名重名的东西,都放入到命名空间里
一个命名空间就定义了一个作用域,命名空间里的所有内容都被限定到该作用域里了
iostream提供了一个叫命名空间的东西,标准命名空间的名字叫std
属于C++里的一种新的作用域
-
普通的命名空间
-
嵌套的命名空间
命名空间的三种使用方法:
-
命名空间的名字 :: 成员名字(::是作用域限定符,用于调用全局变量的那个变量)
-
使用场景:命名空间里的成员在文件里偶尔被使用
-
肯定不会产生冲突(同一个工程中可以定义多个相同名称的命名空间,编译器会将相同名字的命名空间合并成一个命名空间来使用)
-
-
使用 using 命名空间:: 成员名字; 来导出成员名字 (使该命名空间里的成员变就相当于文件里的全局变量)
-
会造成命名冲突的问题,因为全局作用域里可能有与该成员重命名的变量
-
适用于场景:当前命名空间里的个别成员被多次在某个文件里被多次使用
-
1. using std:: cout;
2. using std:: endl;
3. using std:: cin;
3. using namespace std; 这是将命名空间里的所有成员都导出来的方法
当前命名空间中某个成员在某个文件里使用的次数比较多
缺陷:发生命名冲突的冲突率比较多(因为相当于将命名空间)
输入输出方式: printf ,scanf 与 cout ,cin的区别
printf 要输入大量的字符串,不会进行检测
scanf会被报不安全,比如没有放取取地址符,在编译期间不会检测,但是在程序运行期间就会报错
cout 使用 << 来进行分割字符串,可以用“\n"字符来换行,也可以使用endl (在标准命名空间里被命名,因此使用的时候要使用标准命名空间) 可以形象的理解为从 cout << 内容 从内容流向cout,再从cout流向控制台
同理:cin>> 内容 ,内容是从键盘流向cin,再从cin流向控制台
c++里对函数类型与返回值有严格的检查,比如省略返回值类型,C语言会默认用int类型,c++会进行报错,即使是没有返回类型,也要严格的定义为void
缺省参数分类 来自于备胎思想,提供返回值,就用返回值,不提供就使用缺省值
-
全缺省参数
-
半缺省参数:只有部分参数带有缺省值
名字修饰规则区别:
c++里有函数重载-->可以理解为一词多义,比如可以用于写一个通用类型函数
函数名字相同,代码的参数列表不同,而在C语言里这样写就会报函数重定义
重定义条件:函数名字相同,在同一个作用域
是否形成重载,与函数返回值类型是否相同,没有关系
参数列表不同:参数的个数,参数的类型不同,参数的次序不同
调试工具:c--> gcc
c++-->g++
endl:语句结束,用于c++的输出流的换行
引用
类和对象,有面向过程向面向对象的转变