请写程序使得main函数得到正确的输出
EXAMPLE INPUT
XiaoMing
XiaoHong
EXAMPLE OUTPUT
XiaoMing
XiaoHong
XiaoMing
主程序 (不能修改)
#include "source.cpp"
int main() {
string name1, name2;
cin >> name1 >> name2; // XiaoMing XiaoHong
Master somebody(name1);
Dog snoopy(somebody.getName());
Cat helloKitty = snoopy.getPeer();
cout << helloKitty.getMaster() << endl; // XiaoMing
snoopy.changeMaster(name2);
cout << helloKitty.getMaster() << endl; // XiaoHong
helloKitty.changeMaster(name1);
cout << snoopy.getMaster() << endl; // XiaoMing
}
参考答案
by yizuodi 有点乱 总之用静态变量
#include <iostream>
#include <string>
using namespace std;
class Master{
public:
static string name;
Master(){
name = "Hello world";
}
Master(string tmp){
name = tmp;
}
string getName(){
return name;
}
void changeMaster(string & tmp){
name = tmp;
}
string getMaster(){
return name;
}
};
string Master::name = "Hello world";
class Dog:public Master{
public:
string peer;
Dog(){
peer = "Hello world";
}
Dog(string tmp){
peer = tmp;
name = tmp;
}
string getPeer(){
return peer;
}
};
class Cat: public Master{
public:
string peer;
Cat(){
peer ="Hello world";
}
Cat(string tmp){
peer = tmp;
name = tmp;
}
Cat & operator = (string & tmp){
peer = tmp;
}
};
ZHC的答案
#include
#include
using namespace std;
class Master{
public:
static string name ;
Master(){
name = "sb" ;
}
Master( string name1 ){
name = name1 ;
}
void changeMaster(string name1){
name = name1 ;
}
string getName(){
return name ;
}
string getMaster(){
return name ;
}
} ;
string Master::name = "sb" ;
class Dog : public Master {
public:
Dog(){
name = "sb" ;
}
Dog( string name1 ){
name = name1 ;
}
string getPeer(){
return name ;
}
} ;
class Cat: public Master{
public:
Cat(){
name = "sb" ;
}
Cat( string name1 ){
name = name1 ;
}
Cat &operator = (string &name1 ){
name = name1 ;
}
};
答案
#include <iostream>
#include <string>
using namespace std;
class Master
{
public:
string name;
Master(string name_): name(name_) {
}
string getName() { return name; }
};
string master;
class Dog
{
public:
Dog(string m) {
master = m;
}
void changeMaster(string m) {
master = m;
}
string getMaster() {
return master;
}
Dog getPeer() { return *this; }
};
#define Cat Dog
#include
#include
using namespace std;
class Master{
public:
static string name ;
Master(){
name = "sb" ;
}
Master( string name1 ){
name = name1 ;
}
void changeMaster(string name1){
name = name1 ;
}
string getName(){
return name ;
}
string getMaster(){
return name ;
}
} ;
string Master::name = "sb" ;
class Dog : public Master {
public:
Dog(){
name = "sb" ;
}
Dog( string name1 ){
name = name1 ;
}
string getPeer(){
return name ;
}
} ;
class Cat: public Master{
public:
Cat(){
name = "sb" ;
}
Cat( string name1 ){
name = name1 ;
}
Cat &operator = (string &name1 ){
name = name1 ;
}
};