Inside The C++ Object Model(四)函数语意学

来源:互联网 发布:电脑k歌软件 编辑:程序博客网 时间:2024/05/16 06:40

一 Member的各种调用方式:

(1)C++支持三种member functions:static、nostatic和static。

(2)Nonstatic成员函数的调用:

*nonstatic member function至少必须和一般的nonmember function有相同的效率。

*编译器内部把"member函数实体"转换为对等的"nonmember 函数实体"。

(3)virtual Member Function:

*例如:ptr->fun1()将内部转化为:(*ptr->vptr[1])(ptr)。这里假设fun1在虚表中第1个索引处。

(4)static member functions:

1.static成员函数的主要特性是:没有this指针。源于主要特性的次要特性有:

*它不能直接存取类中的nonstatic data。

*不能被声明为const、volatile或virtual。

*不需要经由class object调用-虽然大部分它是这样被调用的。


二 Vitual Member Functions(非常重要):

*详见C++虚函数文件。


三 函数性能

四 指向Member Function的指针。

五 Inline Functions:

(1)关键字inline只是一个请求,编译器有复杂的计算方法(执行成本),来决定一个函数是否变成inline。

(2)inlie是#define的一个安全替代品。

(3)一个inline函数被调用太多次会产生大量的扩展码,使程序的大小暴涨。





原创粉丝点击