‹ 上一题 下一题 ›

g6-05049. GESP-6级-2025-09-单选-第03题 未做

下面代码中 v1 和 v2 调用了相同接口 move(),但输出结果不同,这体现了面向对象编程的( )特性。

class Vehicle {
private:
    string brand;

public:
    Vehicle(string b) : brand(b) {}

    void setBrand(const string& b) { brand = b; }
    string getBrand() const { return brand; }

    virtual void move() const {
        cout << brand << " is moving..." << endl;
    }
};

class Car : public Vehicle {
private:
    int seatCount;

public:
    Car(string b, int seats) : Vehicle(b), seatCount(seats) {}

    void showInfo() const {
        cout << "This car is a " << getBrand()
             << " with " << seatCount << " seats." << endl;
    }

    void move() const override {
        cout << getBrand() << " car is driving on the road!" << endl;
    }
};

class Bike : public Vehicle {
public:
    Bike(string b) : Vehicle(b) {}

    void move() const override {
        cout << getBrand() << " bike is cycling on the path!" << endl;
    }
};

int main() {
    Vehicle* v1 = new Car("Toyota", 5);
    Vehicle* v2 = new Bike("Giant");

    v1->move();
    v2->move();

    delete v1;
    delete v2;
    return 0;
}
  • A. 继承 (Inheritance)
  • B. 封装 (Encapsulation)
  • C. 多态 (Polymorphism)
  • D. 链接 (Linking)
未选择
输入
输出

            
答案