利用父类指针可以调用子类中的新增添的公有变量吗
利用父类指针可以调用子类中的新添加的公有变量吗?
利用父类指针可以调用子类中的新添加的公有变量吗?
比如有的函数里面参数是用的父类指针,这时可以把子类的指针赋值给这个函数,然后用父类的指针调用子类?
------解决方案--------------------
不可以的。
------解决方案--------------------
不一定的,如果你非常了解存储结构可以用强转偏移来达到效果
------解决方案--------------------
应该是不可以的,当用子类对象初始化父类对象时,初始化的是父类部分,子类的新特性部分没有初始化,也没有办法初始化,因为那是子类新特性,当然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手法。
这样做明显违法了封装的初衷。
------解决方案--------------------
很明显,不可以。
------解决方案--------------------
父用子的特性 这种抽象就是有问题的
利用父类指针可以调用子类中的新添加的公有变量吗?
比如有的函数里面参数是用的父类指针,这时可以把子类的指针赋值给这个函数,然后用父类的指针调用子类?
------解决方案--------------------
不可以的。
------解决方案--------------------
不一定的,如果你非常了解存储结构可以用强转偏移来达到效果
------解决方案--------------------
应该是不可以的,当用子类对象初始化父类对象时,初始化的是父类部分,子类的新特性部分没有初始化,也没有办法初始化,因为那是子类新特性,当然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手法。
这样做明显违法了封装的初衷。
------解决方案--------------------
很明显,不可以。
------解决方案--------------------
父用子的特性 这种抽象就是有问题的