C++博客-学习札记-最新评论http://www.cppblog.com/Redwave/CommentsRSS.aspxzh-cnWed, 16 Dec 2009 05:15:29 GMTWed, 16 Dec 2009 05:15:29 GMTcnblogsre: 关于多态http://www.cppblog.com/Redwave/archive/2009/12/07/102657.html#102697红波红波Mon, 07 Dec 2009 02:23:00 GMThttp://www.cppblog.com/Redwave/archive/2009/12/07/102657.html#102697#include <typeinfo>

class A
{
public:
virtual void Dis() = 0;
};

class B:public A
{
public:
virtual void Dis()
{
std::cout << "B Make it!\n" << std::endl;
}
};

template<typename T>
void show(T* abc)
{
for (int i=0; i<10; ++i)
{
abc[i].Dis();
}
}

int main()
{
A* pA;
pA = new B[10];
//下面将之强行转化为B*是可行的,但是若是在show()函数里面就有问题了,那样每次进行循环的时候都需要进行类型判断
for (int i=0; i<10; ++i)
{
((B*)pA+i)->Dis();
}

if( typeid(*pA) == typeid(B) )
{
B* pB = dynamic_cast<B*>(pA);
if(pB == 0) return 1;
show(pB);
}
delete []pA;

return 0;
}

红波 2009-12-07 10:23 发表评论
]]>
re: 关于多态http://www.cppblog.com/Redwave/archive/2009/12/07/102657.html#102695红波红波Mon, 07 Dec 2009 02:11:00 GMThttp://www.cppblog.com/Redwave/archive/2009/12/07/102657.html#102695用了虚函数,我只是没有写出来
在Dis函数中,我循环调用了里面的虚函数,当指针自加时会不知自己的步长
也就是说,若是传入数组指针的个数num为1,那么肯定是不会有问题的,但是,若是传入100就有问题了

红波 2009-12-07 10:11 发表评论
]]>
re: 关于多态http://www.cppblog.com/Redwave/archive/2009/12/07/102657.html#102689LOGOSLOGOSMon, 07 Dec 2009 01:06:00 GMThttp://www.cppblog.com/Redwave/archive/2009/12/07/102657.html#102689你的槽吐得不对
没有虚函数能算多态吗

LOGOS 2009-12-07 09:06 发表评论
]]>
re: 关于多态http://www.cppblog.com/Redwave/archive/2009/12/06/102657.html#102665陈梓瀚(vczh)陈梓瀚(vczh)Sun, 06 Dec 2009 13:21:00 GMThttp://www.cppblog.com/Redwave/archive/2009/12/06/102657.html#102665

陈梓瀚(vczh) 2009-12-06 21:21 发表评论
]]>