#include <iostream> #include<stdio.h> using namespace std; class Parent { public: Parent(int a = 0) { this->a = a; print(); } virtual void print() { cout << "我是爹!" << endl; } private: int a; }; class Child :public Parent { public: Child(int a = 0, int b = 0) :Parent(b) { this->a = a; } void print() { cout << "我是儿子!" << endl; } private: int a; }; void HoToPlay(Parent *base) { base->print(); } void main() { Child c1; c1.print(); system("pause"); return; }
执行结果:
子类的vptr指针是分步执行的:
如何证明vptr指针的存在?
#include <iostream> using namespace std; class Parent1 { public: Parent1(int a = 0) { this->a = a; } void print() { cout << "我是爹" << endl; } private: int a; }; class Parent2 { public: Parent2(int a = 0) { this->a = a; } virtual void print() { cout << "我是爹" << endl; } private: int a; }; void main() { printf("sizeof(Parent):%d \nsizeof(Parent2):%d \n", sizeof(Parent1), sizeof(Parent2)); cout << "hello..." << endl; system("pause"); return; }
结论:有虚函数的类,含有一个4bit的指针