读书人

利用父类指针可以调用子类中的新增添的

发布时间: 2012-10-11 10:16:10 作者: rapoo

利用父类指针可以调用子类中的新添加的公有变量吗?
利用父类指针可以调用子类中的新添加的公有变量吗?

比如有的函数里面参数是用的父类指针,这时可以把子类的指针赋值给这个函数,然后用父类的指针调用子类?

[解决办法]
不可以的。
[解决办法]
不一定的,如果你非常了解存储结构可以用强转偏移来达到效果
[解决办法]
应该是不可以的,当用子类对象初始化父类对象时,初始化的是父类部分,子类的新特性部分没有初始化,也没有办法初始化,因为那是子类新特性,当然virtual是例外,因为设置virtual的目的是希望子类实现它,那么此时如果通过父类指针调用此虚函数,实际调用的是子类的。同理,如果用父类来初始化子类,由于父类中不存在子类的新特性,所以此时只能部分初始化子类,即子类继承父类的部分。
[解决办法]
直接的话不可以、
[解决办法]
不行,是一种错误的想法,你可以在non-member function通过class member-function进行调用,否则就破坏了class的封装性,具体看EffectiveC++ Item23!
[解决办法]
class A{

};
class B:public A
{
int a;
}
void main()
{
A *p1=new B();

B *p2=dynamic_cast<B *>(p1); //把父类指针强制装换成子类指针类型,动态类型性转换
p2->a=5;
}
楼主说的是这个意思么?
[解决办法]
不可以,也不推荐3L的hacking手法。
这样做明显违法了封装的初衷。

[解决办法]
很明显,不可以。
[解决办法]
父用子的特性 这种抽象就是有问题的

读书人网 >C++

热点推荐