C++学习笔记
类和对象的区别
- C语言中的 struct 只能包含变量,而 C++ 中的 class 除了可以包含变量,还可以包含函数。
- C:
1. //定义结构体 Student
2. struct Student{
3. //结构体包含的成员变量
4. char *name;
5. int age;
6. float score;
7. };
8. //显示结构体的成员变量
9. void display(struct Student stu){
10. printf("%s的年龄是 %d,成绩是 %f\n", stu.name, stu.age, stu.score);
11. }
- Cpp:
12. //通过class关键字类定义类
13. class Student{
14. public:
15. //类包含的变量
16. char *name;
17. int age;
18. float score;
19. //类包含的函数
20. void say(){
21. printf("%s的年龄是 %d,成绩是 %f\n", name, age, score);
22. }
23. };
- 通过结构体定义出来的变量还是叫变量,而通过类定义出来的变量有了新的名称,叫做对象(Object)。
- 我们需要在计算 机内存中的某个地方放置读取的东西。我们将这样一个“地方”称为一 个对象。一个对象是一个具有某种类型的存储区域,类型用来指定可 以放置什么样的信息。一个有名字的对象称为一个变量。例如,字符 串存放在string变量中,整数存放在int变量中。你可以将对象看成一 个“盒子”,可以在其中放置该对象类型的数值。
- 可以将类比喻成图纸,对象比喻成零件,图纸说明了零件的参数(成员变量)及其承担的任务(成员函数);一张图纸可以生产出多个具有相同性质的零件,不同图纸可以生产不同类型的零件。
- 类只是一张图纸,起到说明的作用,不占用内存空间;对象才是具体的零件,要有地方来存放,才会占用内存空间。
- 在 C++ 中,通过类名就可以创建对象,即将图纸生产成零件,这个过程叫做类的实例化,因此也称对象是类的一个实例(Instance)。
单词流
- C++用户自定义类型通常由两部分构成:公有接口 (用“public:”标识)和具体实现(用“private:”标识)。这样做主要 为了将用户接口(用户方便使用类型所需的)和具体实现(实现类型 所需的)分开。
class Token_stream{ public: Token_stream(); //创建一个单词流 Token get(); //获取一个单词 void putback(Token t); //放回一个单词 private: //implementation details };
智能指针
裸指针:可以精准的控制每一块内存,但是存在内存泄漏的可能性
class A; A *p = new A; ...... /* do something */ ...... delete p;
要保证程序不会内存泄漏, 必须保证自new之后一直到delete之间, 代码是异常安全的, 即使异常出现p所持资源也会被释放。然而随着程序的开发,这个过程中可能经过无数人共同开发完成,在这个简单的例子中都很难保证程序未来永远异常安全
零碎知识点
map使用的是红黑树,占用的内存更大,对于有序要求的程序可以使用
unordered_map使用的是hash表,建立时间长,但是对于检索查找更加的快捷
拷贝有等号拷贝和构造拷贝之分
const用法总结:
对象构造要做到线程安全,唯一的要求是在构造期间不要泄露this指针,即
-
不要在构造函数中注册任何回调;

浙公网安备 33010602011771号