簡體   English   中英

了解 OOP 類繼承/關系 C++

[英]Understanding OOP class inheritance/relations c++

這是我的 c++ 介紹 webclass 的 11 節中的第 10(1/1) 節;

我可能離完成這個練習還很遠,但我真的不知道如何從這一點繼續我自己。

該練習是從另一種語言翻譯的,如果我遺漏或錯誤輸入了一些變量,我會提前道歉,如果指出,我會嘗試更正它們。

當某些函數來自正在繼承的類時,我很難理解如何構造一個新對象,不確定要搜索哪些術語,(在第二部分) Car::Car(string make, string model, string rego, bool onoff): Vechile(weight, top_speed, driven_km)應該從Car carX(weight, speed, km, make, model, rego, 0);獲取它的值Car carX(weight, speed, km, make, model, rego, 0); 主要是,

我如何正確構造(?)carX 對象? weight, top_speed, driven_km的值是從 Vechile 類繼承的,我在這里假設我需要以正確的順序顯示修飾符((例如, weight, speed, km, make, model, rego, onoff )作為根據為練習提供的 main() 程序),

但我無法讓代碼通過Car::Car(string make, string model, string rego, bool onoff): Vechile(weight, top_speed, driven_km)與 Web 界面編譯器中的任何其他組合一起工作。

我說得對嗎,還有什么我想念的嗎?

代碼中的函數大部分仍在進行中,可能會或可能不會像目前那樣工作,但是如果您不介意,我寧願只在此問題中獲得與 OOP 相關問題的幫助。

感謝您的時間。

第 1 部分:不可編輯的頂部(vechile 類);

    #include <iostream>
#include <string>
using namespace std;

class Vechile
{
  public:
  int weight;
  int top_speed;
  long driven_km;
  Vechile(int weight, int top_speed, long driven_km);
  void drive(int km_togo);
  int GiveWeight();
  int GiveTopspeed();
  long GiveDrivenKm();
};

Vechile::Vechile(int Ap, int Ahn, long Akm)
{
  weight = Ap;
  top_speed = Ahn;
  driven_km = Akm;
}

void Vechile::drive(int km_togo)
{
  driven_km += km_togo;
}

int Vechile::GiveWeight()
{
  return weight;
}

int Vechile::GiveTopspeed()
{
  return top_speed;
}

long Vechile::GiveDrivenKm()
{
  return driven_km;
}

第 2 節:到目前為止我所做的:(汽車類,檢查汽車功能)

    class Car : public Vechile
{
    public:
    string rego, model, make;
    bool onoff;

    Car(string make,string model,string rego, bool onoff);


char check();
char start();

};
       Car::Car(string make, string model, string rego, bool onoff):
        Vechile(weight, top_speed, driven_km)


        {

        Car::make = make;
        Car::model = model; 
        Car::driven_km = driven_km; 
        Car::rego = rego;
        Car::top_speed = top_speed;
        Car::weight = weight;
        Car::onoff = onoff; 
        }   

        char Car::check()
        {
            cout << "Car Info:" << endl;
            cout << "Make:"<< Car::make << endl;
            cout << "Model:"<< Car::model<< endl;
            cout << "Driven KM:"<< Car::driven_km << endl;
            cout << "Weight" << Car::weight << endl; 
            cout << "Top_speed:"<< Car::top_speed << endl;
            cout << "rego:"<< Car::rego << endl;

            if(Car::onoff = 0) 
            { 
                cout << "Car is not started"<<endl;
            } 
            else 
            { 
                cout << "Car is started"<<endl; 
            }
        }
        char Car::start()
        {
        onoff = 1;

    }

第 3 部分:不可編輯的主要內容;

int main()
{
    int weight, speed;
    long km;
    string make, model, rego;

    cout << "Give make of Car: ";
    cin >> make;

    cout << "Give model of car: ";
    cin >> model;

    cout << "Give registration of car: ";
    cin >> rego;

    cout << "Give weight of car: ";
    cin >> weight;

    cout << " Give top speed of car";
    cin >> speed;

    cout << "Enter driven km";
    cin >> km;

    cout << endl;

    Car carX(weight, speed, km, make, model, rego, 0);

    carX.check();
    carX.start();
    carX.drive(95);
    cout << endl;
    carX.check();
}
Car::Car(string make, string model, string rego, bool onoff):
    Vechile(weight, top_speed, driven_km)

:表示您正在調用Vechile的構造函數。 但是,您尚未提供weighttop_speeddriven_km是什么。

您必須在Car構造函數中包含這些參數。

Car::Car(int weight, int top_speed, long driven_km, string make, string model, string rego, bool onoff):
    Vechile(weight, top_speed, driven_km)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM