C++问题: 通过怎样的方式父类的对象可以直接调用子类的成员~~,求解~~
展开全部
不可以吧!
如果实在想访问,可以通过虚函数方式进行访问,比如:
class father
{
public:
virtual void* getElementsAddr()
{
return null;
}
};
class child : public father
{
public:
virtual void* getElementsAddr()
{
return &element;
}
private:
int element;
}
void main()
{
father &cFather = child();
void* pElement = cFather.getElementsAddr();
}
不知道是不是你想要的方式。
如果实在想访问,可以通过虚函数方式进行访问,比如:
class father
{
public:
virtual void* getElementsAddr()
{
return null;
}
};
class child : public father
{
public:
virtual void* getElementsAddr()
{
return &element;
}
private:
int element;
}
void main()
{
father &cFather = child();
void* pElement = cFather.getElementsAddr();
}
不知道是不是你想要的方式。
追问
嗯,为什么父类和子类的成员函数都用指针形式呢,不用可不可以~~
追答
技术上来说也可以不用,其实不管用不用指针,都没有这样编程的,可能要看你的具体应用场景来设计了。 我只是用了一个不应该用的小技巧达到了你说的目的而已。
class father
{
public:
virtual int getElementsAddr()
{
return element;
}
private:
int element;
};
class child : public father
{
public:
virtual int getElementsAddr()
{
return element;
}
private:
int element;
}
void main()
{
father &cFather = child();
void* pElement = cFather.getElementsAddr();
}
展开全部
若是子类有而父类没有的成员,不建议这种方式调用,因为无法保证父类指针或引用指向的是正确的子类对象,若不正确可能导致内存非法操作。
若是子类和父类都有的成员,这正是多态的使用方式,用虚函数就行了
若是子类和父类都有的成员,这正是多态的使用方式,用虚函数就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
要先转换成子类
father* a = new child();
child* b = (child*)a;
b->f();
father* a = new child();
child* b = (child*)a;
b->f();
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询