(急)初学,请教大侠c++中virtual的意义
class A{
public:
virtual void out(void){cout<<"I am A"<<endl;};
};
class B:public A{
public:
void out(void){cout<<"I am B"<<endl;};
};
class C:public B{
public:
void out(void){cout<<"I am C"<<endl;};
};
void output(A &temp){
temp.out();
};
void main(void){
A a;
B b;
C c;
output(a);
output(b);
output(c);
}
//------------------
使用virtual的输出:
I am A
I am B
I am C
//--------------------------------
不使用virtual的输出:
I am A
I am A
I am A
//为什么要在class parent中加上virtual才好用,而不用三个都加?还有,为什么在test()函数要使用引用传值(& temp)才能保证正确输出?另外请帮助小弟理解一下virtual的用法。谢谢!!!!
问题点数:100、回复次数:5Top
1 楼hollysky(爱神)回复于 2002-07-02 14:16:37 得分 20
不使用virtual是overload
使用virtual是多态(有function map)Top
2 楼LocalVar(分乃身外之物,即使我回答对了,也别给分)回复于 2002-07-02 14:18:56 得分 10
这个问题你去看书吧,因为你根本不懂c++.所有将c++的书上都会将这一点的。如果这个问题你也要问的话,我不知道你还要问多少问题。Top
3 楼tuying2(方法)回复于 2002-07-02 14:31:01 得分 40
如果不用virtual子类继承对象时,子类将继承父类对象相关成员函数的完全拷贝,如果用virtual子类继承父类对象的相应成员函数时,只包含该函数的指针。Top
4 楼seakingw(小健)回复于 2002-07-02 14:48:26 得分 20
想想多态情况,即:从同一个父类继承的子类如何表现自己的特殊性?Top
5 楼zionka(Zionka)回复于 2002-07-02 14:50:51 得分 10
呵呵,是呀。
建议这位朋友先找本C++的书(而不是WINDOWS的什么MFC入门到精通),好好看一看。在理解OOP的思想后,你应该会变得从容。呵呵,也不用标记(急)了。Top




