昨天晚上发现的问题:当父类中有一个变量,比如说name,子类里我再定义一个name的时候,这个name在下面的操作里不生效,你说气不气,幸亏CSDN大神指导,将子类中的name给去掉,但这时本来父里面的private的变量name,子类便不能访问,于是将private改成protect,不管习惯好不好,先能用再说。
#include <iostream>
#include <string>
using namespace std;
class Transport
{
public:
Transport(string thename);
void transpeople();
void hitsb(string sb);
virtual void trans();
protected:
string name;
};
Transport::Transport(string thename)
{
name = thename;
}
void Transport::transpeople()
{
cout << Transport::name << "上来了一些人,我要开始飙车了!!"<<endl;
}
void Transport::trans()
{
cout << name <<"正在行驶中!"<<endl;
}
void Transport::hitsb(string sb)
{
cout << "快看,前面有sd,我把"<< sb <<"撞飞了。。"<<endl;
}
class Bus : public Transport
{
public:
Bus(string thename);
void trans();
};
Bus::Bus(string thename) : Transport(thename)
{
}
void Bus::trans()
{
Transport::trans();
cout << name <<"正在公路上行驶!"<<endl;
}
class Talltrain : public Transport
{
public:
Talltrain(string thename);
void trans();
};
Talltrain::Talltrain(string thename):Transport(thename)
{
}
void Talltrain::trans()
{
Transport::trans();
cout << Transport::name <<"正在轨道上面行驶" <<endl;
}
int main()
{
Bus bus("奔驰");
bus.trans();
bus.transpeople();
cout << "开快了,需要带走一个人的生命:"<<endl;
string sb;
cin >> sb;
bus.hitsb(sb);
Talltrain tailtrain("复兴号");
tailtrain.trans();
tailtrain.transpeople();
cout << "开快了,需要带走一个人的生命:"<<endl;
cin >> sb;
tailtrain.hitsb(sb);
}