C++源文件后缀名.cc/.cpp,头文件后缀名.hh/.hpp
C++:编译使用g++命令
3.C++输入输出流比c中的printf更加简化
4.日志系统:拿到一个新的程序,怎么读取借助于日志系统??????????????
5.运算符重载:自己定义一个符号对于并非是内置类型的数据进行符号运算
6.关联式容器:set和map。在关联式容器完成基本完成搜索引擎项目
7.继承:从大的类别动物到具体的动物,会有一些性质的继承,也会有自己的特殊的特性
8.多态:最难,一个语句会产生多种效果
9.模板:研究透彻很难,看懂基本的模板,工作中很少用到,难看懂
10.移动语义与资源管理:左值和右值,左值可以一直保留,右值超过该行直接无效。资源管理主要是通过智能指针实现
C++编程范式
面向过程的编程范式,C语言的编程设计
面向对象的编程,万物皆对象,c++的主要的特征,c++的特征有很多种,结合各种语言特征
泛型编程:可以对于对象进行推导
模板元编程:难
函数式编程范式:难
设计模式:可以让机器更能看懂
C++标准:老版本稳定,c++11很重要
命名空间:
如果将变量全部定义在全局可能不安全,都可以进行修改。
如果将变量定义在局部,当出了大括号就不能使用。
所以说在定义一个命名空间的时候
定义函数,变量,命名空间,都称为命名空间中的实体
namespace hh
{
int val1 = 0;
char val2;
}// end of namespace hh
大括号后面可以加;也可以不加
定义的时候是没有缩进的,可以在最后一行添加注释使得结尾更加清晰
命名空间的使用方式:三种方式
1.作用域限定符
例如使用std命名空间中的cout 使用std::cout
准确但是繁琐
如果命名空间中套命名空间,需要 :: ::
2.using编译指令 using name space
尽量写在局部,既可以在局部(放在{}中)使用保证在用到的时候才能出来
可能会出现的问题是可能会和全局变量名出现冲突,借助于方式一作用域限定符帮助确定
当不清楚命名空间中的具体情况的时候,不要使用using,因为可能出现命名空间中的实体和自定义的变量和函数出现冲突。
3.using声明机制
初学阶段使用using声明机制,需要什么就添加什么,避免出现using冲突,同时避免每次使用加::
using std::cout;
using std::endl;
仍然是建议将using声明语句放在局部作用域中
即使命名空间中实体与全局位置实体重名,在局部位置也遵循“就近原则”形成屏蔽
对比使用using编译机制如果全局变量和namespace中变量名字相同会出现冲突,但是使用using声明机制在局部使用的时候会对于全局变量形成屏蔽。