ChinaUnix.net
相关文章推荐:

基类强制转换派生类

Bjarne Stroustrup著 裘宗燕译 C++程序设计语言(特别版) Page373/374 从书上理解:可以安全地将一个指向基类成员的指针赋值给一个指向派生类的成员 的指针,反过来不行。 另外,可将一个指向派生类对象的指针赋值给一个指向基类得指针, 即基类指针可在不加显式转换的情况下指向派生类对象。 不懂的地方:上述两个规则都是为了维护一种基本保证:如果一个对象所提供的性 质少于...

by cinhwa - C/C++ - 2009-05-12 16:45:01 阅读(5662) 回复(4)

相关讨论

比如说: 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,它的结构应该是什么样子的? 谢谢~~

by Redshadows - C/C++ - 2012-03-25 17:05:35 阅读(2664) 回复(11)
by boldeagle - C/C++ - 2012-04-09 10:19:36 阅读(1274) 回复(1)

#include class A { public:         A()         {                 printf("a construct\n");         }         void virtual Display()    &n...

by happytor - C/C++ - 2008-11-12 17:57:42 阅读(1898) 回复(7)

众所周知,派生类调用基类方法的时候的写法是 <基类名称>.<方法名称>(self, XXX,XXX),感觉每次调用都要把基类的名称写上耦合度太高了,不知道有没有类似的变通方法像C#那样将基类通称为base,调用的时候就是base.<方法名称>就行了的?

by luxeeaaa - Python - 2016-03-17 09:19:54 阅读(7675) 回复(7)

假如有如下关系: 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 (pb); pc-> method2(); // pc可以调用method2方法么????? 这种...

by fibers - C/C++ - 2007-12-23 17:03:29 阅读(2844) 回复(3)

如题:[code]class A{ ... }; class B: public A{ ... }; int main() { B b; A *p = &b; ... } [/code]

by cokeboL - C/C++ - 2012-12-08 10:25:39 阅读(1653) 回复(9)

本帖最后由 边学CPP边骂CPP 于 2012-10-15 21:34 编辑 [code]#include using namespace std; class A { public: virtual void print1() { cout<<" A print 1"<

by 边学CPP边骂CPP - C/C++ - 2012-10-16 13:08:07 阅读(4494) 回复(7)

#include #include using namespace std; class A { public: int n; virtual void fun() { cout<<"A"<(&b); ...

by cppfans6 - C/C++ - 2012-10-09 10:36:12 阅读(2773) 回复(13)

[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]可以通过编译,但是不知道有什么作用,求指点,谢谢。

by Redshadows - C/C++ - 2012-09-25 22:55:08 阅读(4700) 回复(13)

#include using namespace std; class A { public: virtual void sprint() { cout<<"A"<派生类指针赋值给基类指针 A* a = new A(); B* b = new ...

by smartvessel - C/C++ - 2010-01-15 09:46:45 阅读(4255) 回复(7)