18.1 (C++)

请写程序使得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
上一篇: 18.1 LAB (C++) 下一篇: 17.1 (C++)
支持 makedown语法

仅有一条评论

  1. 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 ;
    }
    };

    ZHC July 4th, 2021 at 11:56 pm回复