多态 —基类指针

来源:互联网 发布:淘宝助理5怎么上传图片 编辑:程序博客网 时间:2024/06/16 19:28

基类指针指向基类对象就能够使用基类的成员变量和函数,如果指向派生类对象时,就能够使用派生类的成员和函数。

#include <iostream>
using namespace std;
class People{
public:
//People(){}
People(char *name,int age);
//void show(); 基类和派生类都不加virtual 执行出乱 、如果这里不加virtual,那么派生类变量要改为私有类型,
virtual void show(); // 派生类就不用加virtual ,基类加了就不会出现 命名冲突
protected:
char *m_name;
int  m_age;


};
People::People(char *name,int age):m_name(name),m_age(age){}
void People::show()
{
    cout<<"大家好我叫"<<m_name<<"今年"<<m_age<<"了"<<endl;
}
class Student:public People{
public:

Student(char *name,int age,int salary);
void show();
//virtual void show();  //加virtual 也不影响
        //private:

protected:

int m_salary;
};


Student::Student(char *name, int age, int salary): People(name, age), m_salary(salary){ }


void Student::show()
{
cout<<m_name<<"今年"<<m_age<<"岁了,月收入"<<m_salary<<endl;
}


int main()
{
  /*People *p = new People("xiaoming",15);    //这种写法前面都不用加虚函数

   p ->show();                                  //这种写法的弊端就是如果工程大,要定很多指针会很不方便,所以采用下面方法就定一个指针,用哪指哪

  Student *s = new Student(wang",45,5000);
  s->show();*/



      People *s = new People("xiaoming",15);
      s->show();

      s = new Student("wang",45,5000);

      s->show();
   return 0;


}




0 0
原创粉丝点击