From d9dbf6f32f0044f1eee946641d7e6242e27f413a Mon Sep 17 00:00:00 2001 From: gcxzhang Date: Sun, 31 May 2020 08:00:35 +0800 Subject: [PATCH] update --- basic_content/extern/README.md | 2 +- basic_content/pointer_refer/README.md | 2 +- basic_content/vptr_vtable/README.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/basic_content/extern/README.md b/basic_content/extern/README.md index 40d973c..41c1ebe 100644 --- a/basic_content/extern/README.md +++ b/basic_content/extern/README.md @@ -10,7 +10,7 @@ 在C++中常在头文件见到extern "C"修饰函数,那有什么作用呢? 是用于C++链接在C语言模块中定义的函数。 -C++虽然兼容C,但C++文件中函数编译后生成的符号与C语言生成的不同。因为C++支持函数重载,C++函数编译后生成的符时带有函数参数类型的信息,而C则没有。 +C++虽然兼容C,但C++文件中函数编译后生成的符号与C语言生成的不同。因为C++支持函数重载,C++函数编译后生成的符号带有函数参数类型的信息,而C则没有。 例如`int add(int a, int b)`函数经过C++编译器生成.o文件后,`add`会变成形如`add_int_int`之类的, 而C的话则会是形如`_add`, 就是说:相同的函数,在C和C++中,编译后生成的符号不同。 diff --git a/basic_content/pointer_refer/README.md b/basic_content/pointer_refer/README.md index a3b48b6..ba4b0dd 100644 --- a/basic_content/pointer_refer/README.md +++ b/basic_content/pointer_refer/README.md @@ -169,6 +169,6 @@ End of assembler dump. ## 3.总结 -C++中引入了引用操作,在对引用的使用加了更多限制条件的情况下,保证了引用使用的安全性和便捷性,还可以保持代码的优雅性。在适合的情况使用适合的操作,引用的使用可以一定程度避免“指针满天飞”的情况,对于提升程序鲁棒性也有一定的积极意义。最后,指针与引用底层实现都是一样的,不用担心两者的性能差距。 +C++中引入了引用操作,在对引用的使用加了更多限制条件的情况下,保证了引用使用的安全性和便捷性,还可以保持代码的优雅性。在适合的情况使用适合的操作,引用的使用可以一定程度避免“指针满天飞”的情况,对于提升程序稳定性也有一定的积极意义。最后,指针与引用底层实现都是一样的,不用担心两者的性能差距。 上述部分参考自: diff --git a/basic_content/vptr_vtable/README.md b/basic_content/vptr_vtable/README.md index 6c46d5c..47f9df5 100644 --- a/basic_content/vptr_vtable/README.md +++ b/basic_content/vptr_vtable/README.md @@ -12,7 +12,7 @@ 为了实现虚函数,C ++使用一种称为虚拟表的特殊形式的后期绑定。该虚拟表是用于解决在动态/后期绑定方式的函数调用函数的查找表。虚拟表有时会使用其他名称,例如“vtable”,“虚函数表”,“虚方法表”或“调度表”。 -虚拟表实际上非常简单,虽然用文字描述有点复杂。首先,**每个使用虚函数的类(或者从使用虚函数的类派生)都有自己的虚拟表**。该表只是编译器在编译时设置的静态数组。虚拟表包含可由类的对象调用的每个虚函数的一个条目。此表中的每个条目只是一个函数指针,指向该类可访问的最派生函数。 +虚拟表实际上非常简单,虽然用文字描述有点复杂。首先,**每个使用虚函数的类(或者从使用虚函数的类派生)都有自己的虚拟表**。该表只是编译器在编译时设置的静态数组。虚拟表包含可由类的对象调用的每个虚函数的一个条目。此表中的每个条目只是一个函数指针,指向该类可访问的派生函数。 其次,编译器还会添加一个隐藏指向基类的指针,我们称之为vptr。vptr在创建类实例时自动设置,以便指向该类的虚拟表。与this指针不同,this指针实际上是编译器用来解析自引用的函数参数,vptr是一个真正的指针。