C++ Primer阅读笔记:关键概念解析

需积分: 0 3 下载量 36 浏览量 更新于2024-12-31 收藏 54KB DOC 举报
"《C++Primer》阅读笔记" 这篇笔记涵盖了C++编程语言的一些核心概念,主要来自于《C++Primer》这本书。以下是对笔记中提到知识点的详细解释: 1. **浮点数类型**: 在C++中,`double`类型的浮点数通常比`float`具有更高的精度,且在某些硬件上,`double`的计算速度可能更快。 2. **八进制表示**: 以0开头的整数字面值是八进制表示,例如`020`表示十进制中的16。 3. **宽字符**: `wchar_t`类型用于存储宽字符,前缀`L`用于创建宽字符字面值,如`L'a'`。 4. **左值与右值**: 左值是可以赋值的表达式,比如变量;右值则不能赋值,但可以参与运算。左值可以出现在赋值运算符的两边,而右值只能出现在右边。 5. **初始化与赋值**: 在C++中,`int i = 5;`是初始化,而`i = 5;`是赋值。初始化是在声明时进行的,而赋值可以在任何时候进行。 6. **内置类型变量的默认初始化**: 内置类型(如`int`)在函数外部定义且未初始化时,会自动初始化为0。 7. **魔数(Magic Number)**: 魔数是指没有明确含义的常数,使用`const`关键字定义可以提高代码可读性,例如`const int bufSize = 512;`。 8. **const变量的访问性**: `const`变量如果未声明为`extern`,则不能在其他源文件中访问,这允许在头文件中定义`const`变量供多处使用。 9. **const引用与右值**: `const`引用可以绑定到右值,如`const int &r = a + b;`,这使得临时对象可以通过引用被持久化。 10. **struct的作用**: 在C++中,`struct`不仅可以用来定义结构体,也可以定义类。 11. **头文件的使用规则**: 头文件应避免包含变量或函数的定义,只应包含类声明、`const`对象和`inline`函数。 12. **指针的定义**: 单独的声明如`char *p1, p2;`中,只有`p1`是定义为指针,`p2`不是。每行应只定义一个指针以避免混淆。 13. **typedef的使用**: `typedef`不是简单的文本替换。例如,`typedef string *pstr;`定义了一个指向`string`的指针类型,`const pstr cstr;`相当于`string *const cstr;`,而不是`const string *cstr;`。 14. **strlen()函数**: `strlen()`计算C风格字符串的长度,不包括结束的空字符`\0`。例如,`strlen("hello")`返回5。 15. **string类的c_str()函数**: `string`对象的`c_str()`方法返回C风格字符串的指针。当原`string`对象发生变化时,通过`c_str()`获取的指针将失效。因此,如果需要持久保存,应复制到新的`string`对象,如`string strc = st2;` 这些笔记点涵盖了C++中的基本类型、常量、指针、引用、字符串操作等基础概念,对于学习C++的初学者非常有价值。