Snowming04's Blog
一颗红❤
Toggle navigation
Snowming04's Blog
主页
Cobalt Strike
Accelerated C++
区块链安全
友链
关于我
常用工具
代码积累
归档
标签
【C++进阶】01. C++基础
? C++ ?
2020-03-26 11:47:50
355
0
0
snowming
? C++ ?
# 0x01 面向对象语言的特点 面向对象语言的特点: - 封装:数据和行为绑到一起 - 继承:描述事物与事物之间的关系 - 多态:不同的对象对同一件事物有不同的操作,不是编译时决定的是运行时决定的 - 实例化:声明对象的过程叫实例化 - 设计模式降低耦合性:把不变的代码和变化的代码分开。多态是设计模式的基础 C++ 设计初衷是面向对象的,弥补C的不足。 # 0x02 断言宏assert() - assert():执行到该行代码处,断言一定成立,如果不成立则弹错。 - 注意:assert只是在 `Debug` 模式下起作用,并且不能替换检查语句。(意思是 debug 版编译的程序 编译为 release 版它就不起作用了) - 作用:用于快速定位错误位置。  如果输入a时输入的小于10则会弹窗:  # 0x03 布尔类型 布尔类型:是C++特有的(C只有`_Bool`),只有0和1(非零)。 - 小布尔:bool nRet = true; //false(这种是通常所说的小布尔) - 大布尔: ``` #define BOOL int #define TRUE 1 #define FALSE 0 ``` # 0x04 命名空间 **<u>C++的三种作用域:</u>** - 局部作用域:函数作用域、块作用域 - 名字空间作用域:命名空间(namespace)、全局作用域 - 类域 **<u>命名空间的作用:</u>** 避免不经意的名字定义冲突,以及使用库中相同的名字导致的冲突。 **<u>命名空间的定义:</u>** ``` namespace CR26 { int testNum = 3; int m = 4; int k = 5; } ``` 注:声明时候要放在函数的外面或者放到`.h`文件中,否则会报错:  **<u>命名空间的三种使用方式:</u>** ``` using CR26::m; //方式一:using CR26::m;(使用命名空间中的m,相当于声明了m,下面可以使用m) printf("%d\r\n", m); printf("%d\r\n", CR26::k); //方式二:CR26::k(直接使用命名空间中的k) using namespace CR26; //方式三:using namespace CR26;(可以使用命名空间中的所有内容) printf("%d\r\n", testNum); ``` **<u>命名空间编译的结果:</u>** 在`WinHEX`里查看下面这段代码编译成 .obj 的结果: ``` int testNum = 1; namespace CR26 { int testNum = 2; namespace CR27 { int testNum = 3; } } int main(void) { ; return 0; } ``` 拉到底可以看到:  可以看到:这3个 int 类型的 `testNum` 变量属于不同的命名空间: - `?testNum@@3HA` - `?testNum@CR26@@3HA` - `?testNum@CR27@CR26@@3HA` 名称粉碎中会标明变量或函数属于哪个命名空间,从而达到区分变量名相同而命名空间不同却可以同时存在,并能正常使用。 > 注: 名称粉碎:编译器对变量名、函数名按照一定的规则再重新起个名字,常见形式有`类型_变量名_作用域`。 说明:名称粉碎法处理变量,不属于语言规范,不同的编译器对名称粉碎实现的规则不同。只有局部变量和参数不用名称粉碎,其他全部需要名称粉碎。 顺便拓展一下: 使用 VS 自带的工具 `undname.exe` 还原粉碎的名称(可以帮助 C++ 类逆向):   # 0x05 C++头文件的特点 标准的输入输出头文件iostream(注意不要加.h)。 ``` #include <iostream> ``` 其实早期(98标准前)是有`iostream.h`,不用使用`using namespace std`,98标准出来之后就用`iostream`,为了兼容性加.h(非标准)的也可以使用。 - C++ 中使用 printf() 最好使用头文件 `cstdio` 而不是C形式的`stdio.h`。
上一篇:
【C++进阶】02. VS 安装 MSDN
下一篇:
【Accelerated C++】课时4:组织程序和数据
0
赞
355 人读过
新浪微博
微信
腾讯微博
QQ空间
人人网
提交评论
立即登录
, 发表评论.
没有帐号?
立即注册
0
条评论
More...
文档导航
没有帐号? 立即注册