C++ 虚函数

多继承

class A {
	int a;
	virtual int foo() {return 1;}
};

class B {
	int b;
	virtual int f() {return 2;}
};

class C : public A, public B {
	int c;
};

int main() {
	C *c = new C();
	A *a = static_cast<A*>(c);
	B *b = static_cast<B*>(c);
	cout << a << " " << b << " " << c << endl;
    
    return 0;
}

输出是

 0x22e38 0x22e40 0x22e38

即,对于多继承,向上转型后指针指向的其实就是对应的父类的部分;这部分的开头仍然是虚函数表,所以不影响。

你可能感兴趣的:(C++,c++,开发语言)