[英]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
的構造函數。 但是,您尚未提供weight
、 top_speed
和driven_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.