基本语言细节--《深度探索C++对象模型》--(4)The Semantics of Function-总结点
2013-11-20 14:09
169 查看
基本语言细节--《深度探索C++对象模型》--(4)The Semantics of Function-总结点
1.Member 的各种调用方式
(1).非静态成员函数调用:
C++设计准则就是非静态函数的调用效率至少和一般的非成员函数有相同的效率。其实,编译器对C++的成员函数,进行了一系列的处理,使得最后,一个成员函数成为了一个外部函数,以extern说明,并经过name-mangling,添加额外的参数。
(2).虚拟成员函数调用:
通过由编译器产生的虚函数表指针,以及虚函数表中的slot 索引值,来关联实际的运行中的函数,进行调用;(可参照之前的文章)
(3).静态成员函数:
不需要类对象便可调用。其特性为不能直接存取类中的非静态成员,不能为const ,virtual。
(4).inline 函数:
其只是一个申请。由编译器决定是否inline.并且在扩展操作时,会带来参数求值操作以及临时性对象的管理。这些都是由编译器在内部完成的!!!故而在构造函数中不要用inline,你不知道继承层次有多深。
卧浪居士 于HUST2.13.11.20
卧浪居士
1.Member 的各种调用方式
(1).非静态成员函数调用:
C++设计准则就是非静态函数的调用效率至少和一般的非成员函数有相同的效率。其实,编译器对C++的成员函数,进行了一系列的处理,使得最后,一个成员函数成为了一个外部函数,以extern说明,并经过name-mangling,添加额外的参数。
(2).虚拟成员函数调用:
通过由编译器产生的虚函数表指针,以及虚函数表中的slot 索引值,来关联实际的运行中的函数,进行调用;(可参照之前的文章)
(3).静态成员函数:
不需要类对象便可调用。其特性为不能直接存取类中的非静态成员,不能为const ,virtual。
(4).inline 函数:
其只是一个申请。由编译器决定是否inline.并且在扩展操作时,会带来参数求值操作以及临时性对象的管理。这些都是由编译器在内部完成的!!!故而在构造函数中不要用inline,你不知道继承层次有多深。
卧浪居士 于HUST2.13.11.20
卧浪居士
相关文章推荐
- 基本语言细节--《深度探索C++对象模型》--(2)The Semantics of Constructors--总结点
- 基本语言细节--《深度探索C++对象模型》--(3)The Semantics of Data--总结点
- 基本语言细节--《深度探索C++对象模型》--(5)Semantics of Construction,Destruction,and Copy-总结点
- 基本语言细节--《深度探索C++对象模型》--(7)On the Cusp of the Object Model-总结点
- 《深度探索C++对象模型》—Function语意学(The Semantics of Function)
- 基本语言细节--《深度探索C++对象模型》----总结
- 基本语言细节--《深度探索C++对象模型》--(1)Object Lessions----总结点
- 基本语言细节--《深度探索C++对象模型》--(6)Runtime Semantics-总结点
- what are the semantics of a const member function
- 基本语言细节--《The C++ Programming Language 》--(4)剑指新类型
- 基本语言细节--《The C++ Programming Language 》--(1)开辟鸿蒙
- 《深度探索C++对象模型》—构造函数语意学(The Semantics of constructors)
- The Semantics of Function
- 基本语言细节--《The C++ Programming Language 》--(5) 软件大厦中的C++
- 基本语言细节--《The C++ Programming Language 》--(2)类型和声明
- 基本语言细节--《The C++ Programming Language 》--(3)基本功能
- R语言学习总结---基本数据类型
- Go语言反射规则 - The Laws of Reflection
- Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. 错误解决
- Go语言反射规则 - The Laws of Reflection