比如说: class A {}; class B : virtual public A {}; class C : virtual public A {}; class D : public B, public C {}; 用g++编译 B和C的大小应该4个字节,因为他们里面存放着一个指向A的指针。 而D的大小是8个字节,请问D中不应该只是存放着一个指向A的指针么??? 还有就是对于class B,它的结构应该是什么样子的? 谢谢~~
#include
众所周知,派生类调用基类方法的时候的写法是 <基类名称>.<方法名称>(self, XXX,XXX),感觉每次调用都要把基类的名称写上耦合度太高了,不知道有没有类似的变通方法像C#那样将基类通称为base,调用的时候就是base.<方法名称>就行了的?
假如有如下关系:
class a{};
class b:public a
{
private: int x;
public: b(); int method1()const{return x;}
};
class c:public b
{
private: char ar[10];
public:c(); const char * method2(){return ar;}
};
b obj1;
b * pb = & obj1;
c * pc;
pc = dynamic_cast
如题:[code]class A{ ... }; class B: public A{ ... }; int main() { B b; A *p = &b; ... } [/code]
本帖最后由 边学CPP边骂CPP 于 2012-10-15 21:34 编辑
[code]#include
#include
[code] 6 struct A { 7 void show() {cout << "A" << endl;} 8 }; 9 10 11 struct B: public A { 12 virtual void show() {cout << "B" << endl;} 13 }; [/code]可以通过编译,但是不知道有什么作用,求指点,谢谢。
#include