随笔分类 -  C++

摘要:C++11 之前使用默认初始化 C++11 之前对非静态数据成员初始化需要用到初始化列表。 有个问题是,如果类的数据成员比较多,我们又需要定制一些数据成员的初始化操作的时候,需要写很多的构造函数。 来看一个例子: #include <iostream> #include <string> class 阅读全文
posted @ 2022-09-11 22:18 machine_gun_lin 阅读(394) 评论(0) 推荐(0)
摘要:类型别名(C++11) C++ 可以用 typedef 为很长的类型名 type-id 起个别名 identifier: typedef type-id identifier; 其中 type-id 是已有的类型名,identifier 是我们为它起的别名。 例子: typedef std::map 阅读全文
posted @ 2022-09-09 22:59 machine_gun_lin 阅读(541) 评论(0) 推荐(0)
摘要:C++11 引入了静态断言 static_assert,可以在编译期进行断言。 从运行时断言谈起 在静态断言出现前,运行时断言已经存在很久了,我们可以使用 assert(expression) 在运行时进行断言。 运行时断言通常在 Debug 模式下使用而不在 Release 模式下使用(头文件 c 阅读全文
posted @ 2022-09-08 00:31 machine_gun_lin 阅读(634) 评论(0) 推荐(0)
摘要:decltype 说明符(C++11) C++11 引入了 decltype 说明符,decltype 可以获取一个对象或者表达式的类型。 使用起来也很简单: #include <iostream> int main() { int x1 = 0; decltype(x1) x2 = 0; // x 阅读全文
posted @ 2022-09-07 23:25 machine_gun_lin 阅读(186) 评论(0) 推荐(0)
摘要:使用 auto 关键字自动推导变量类型(C++11) C++11 允许使用 auto 关键字对变量类型进行自动推导,通常用在变量类型较长或者很难写出变量类型的场景。 来看一个例子: #include <iostream> #include <string> #include <vector> #in 阅读全文
posted @ 2022-09-07 00:02 machine_gun_lin 阅读(100) 评论(0) 推荐(0)
摘要:命名空间的作用 开发大型软件通常需要许多开发人员并使用很多第三方库,为了防止函数和类型命名冲突,因此引入命名空间。 在使用函数和类型时,可以指定它们的命名空间,这样就不会产生冲突。 来看一个例子: #include <iostream> namespace S1 { void foo() { std 阅读全文
posted @ 2022-09-05 23:47 machine_gun_lin 阅读(612) 评论(0) 推荐(0)
摘要:整数类型 long long(C++11) C++11 增加了 long long 和 unsigned long long 两种整数类型。 long long int 类型和 long long 等价, unsigned long long int 类型和 unsigned long long 等 阅读全文
posted @ 2022-09-05 22:37 machine_gun_lin 阅读(239) 评论(0) 推荐(0)
摘要:const 可以修饰哪些东西? const 可以修饰全局 (global) 或命名空间 (namespace) 或类外部的常量. const 也可以修饰文件、函数或作用域中(block scope)被声明为 static 的对象. const 还可以修饰类内部的静态 (static) 和非静态 (n 阅读全文
posted @ 2022-04-19 00:53 machine_gun_lin 阅读(67) 评论(0) 推荐(0)
摘要:宏定义的问题 C++ 会在预处理阶段对宏定义进行字符串替换. 因此,如果在一个头文件进行了类似如 #define ASPECT_RATIO 1.653 的宏定义,那么此常量相关的编译错误信息显示的会是 1.653, 而这个宏定义如果不在你写的程序内 (而是它包含的一个头文件内),那么定位问题就会很麻 阅读全文
posted @ 2022-04-14 02:56 machine_gun_lin 阅读(60) 评论(0) 推荐(0)
摘要:最开始,C++ 是 C + OO (Object Oriented),所以把 C++ 称为 C with Classes. 而之后 C++ 多了很多新的特性: exceptions (异常) templates (模板) STL (Standard Template Library, 标准模板库) 阅读全文
posted @ 2022-04-14 02:11 machine_gun_lin 阅读(51) 评论(0) 推荐(0)