标签:类型 .net 自动 一个 运行 显示 clear containe 参考
参考:http://www.weixueyuan.net/view/6371.html
总结:
virtual关键字仅用于函数声明,如果函数是在类外定义,则不需要再加上virtual关键字了。
在C++中只有类中的成员函数能被声明为虚函数,而对于顶层函数则不能声明为虚函数。
声明虚函数是为了构成多态。
实际上我们只需要将基类中的display函数通过virtual关键字声明为虚函数,之后即使在派生类中display函数声明时未加上virtual关键字,它在所有的派生类中都将自动成为虚函数。
和普通的成员函数一样,虚成员函数同样可以被继承。
#include<iostream> using namespace std; class base { public: virtual void display(); }; class derived: public base { public: virtual void display(); }; void base::display() { cout<<"I‘m base class!"<<endl; } void derived::display() { cout<<"I‘m derived class!"<<endl; } int main() { base * p = new base; p->display(); delete p; p = new derived; p->display(); delete p; return 0; } 在本例中,我们将两个类中的display函数在类内部声明,类外部定义,当然这么修改并不会改变程序的运行结果。在本例中我们需要注意的是在类内声明时display函数通过在返回类型前添加了virtual关键字而被声明为了虚函数,而在类外定义时,display函数的返回类型前并未添加virtual关键字。 另外在例1中,我们在基类和派生类中的display函数声明时都加上了virtual关键字,以表示将其声明为虚函数,而实际上这是不需要的,我们只需要将基类中的display函数通过virtual关键字声明为虚函数,之后即使在派生类中display函数声明时未加上virtual关键字,但它在所有的派生类中都将自动成为虚函数。 例2: #include<iostream> using namespace std; class base { public: virtual void display(); }; class derived: public base { public: void display(); }; void base::display() { cout<<"I‘m base class!"<<endl; } void derived::display() { cout<<"I‘m derived class!"<<endl; } int main() { base * p = new base; p->display(); delete p; p = new derived; p->display(); delete p; return 0; }
#include<iostream> using namespace std; class base { public: virtual void hello(){cout<<"Hello!"<<endl;} }; class derived: public base { //...... }; int main() { base * p = new base; p->hello(); delete p; p = new derived; p->hello(); delete p; derived d; d.hello(); return 0; }
标签:类型 .net 自动 一个 运行 显示 clear containe 参考
原文地址:http://www.cnblogs.com/yongpan/p/7659188.html