Cpp 对象模型探索 / 类普通成员函数的调用方式
生活随笔
收集整理的這篇文章主要介紹了
Cpp 对象模型探索 / 类普通成员函数的调用方式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
C++設計時有一個要求,類普通成員函數的調用性能要和全局函數差不多。所以編譯器在處理類的普通成員函數的宗旨是將其當作全局函數來處理。
為了達到上述目的,編譯器會對類的普通成員函數進行如下操作:
-
在函數形參中第一位插入類對象的 this 指針。
-
修改函數名稱,使之與類名等信息掛鉤。這樣也就解決了既然將普通成員函數當作全局函數,但是各個類中有重名函數的情況。
栗子:
class A { public:void func(){} };int main() {A a;a.func();return 0; }執行 nm test.o > test.txt 指令,在生成的文件中會找到如下標識:
00000000000006a8 W _ZN1A4funcEv該標識就是編譯器眼中對函數 func 的認識,即:重命名。
綜上,編譯器通過在類普通成員函數中插入類對象的 this 指針和重命名函數名的方式來重置普通成員函數。
?
(SAW:Game Over!)
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的Cpp 对象模型探索 / 类普通成员函数的调用方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Cpp 对象模型探索 / 对象访问成员变
- 下一篇: Cpp 对象模型探索 / 虚函数的调用方