c++学习笔记 四(geekband)

c++学习笔记 四(geekband)_第1张图片
image.png

一个函数的动态绑定要满足3点要求:
1.通过指针调用vptr(this指针)
2.指针有做向上转型(指向子类对象,应为只有这样才会是虚函数)
3.基类要由virtual关键字
动态绑定
((p->vptr)[n])(p);
(
p->vptr[n])(p);

成员函数的const


c++学习笔记 四(geekband)_第2张图片
image.png

class test {
public:

void  Afunt() const {
    cout << "调用const A" << endl;;
};
void Afunt() {
    cout << "调用 A" << endl;
};
void Bfunt()const{
    cout << "调用 B" << endl;
}
void Cfunt() {
    cout << "调用 C" << endl;
}

};
int main() {
test a;
a.Afunt();// "调用 A"
a.Bfunt();//"调用const A"
const test b;
b.Afunt();//"调用const B"
b.Cfunt();// 错误无法调用,因为const对象无法调用非const成员函数。
}

你可能感兴趣的:(c++学习笔记 四(geekband))