汽车类/构造函数C ++

时间:2016-11-13 20:59:35

标签: c++ class constructor

我一直在靠墙试图找出"构造函数"这项任务的一部分。这包括阅读教科书和在线浏览。有人可以指出我正确的方向吗?下面的代码工作正常,只需要添加一个构造函数。

以下是此作业的说明: 汽车类说明:

写一个名为' Car'具有以下成员变量:

年。一个持有汽车模型年的int。

请。一个字符串对象,用于保存汽车的品牌。

速度。保持汽车当前速度的int对象。

此外,该类应具有以下成员函数:

构造。构造函数应该接受汽车的年份并制作成员变量。构造函数应该将这些值初始化为对象的年份并生成成员变量。构造函数应该将速度成员变量初始化为0.

存取器。应创建适当的访问器函数,以允许从对象的年份,制造和加速成员变量中检索值。

加速。加速函数应在每次调用时向速度成员变量添加5。

刹车。每次调用时,制动功能应从速度成员变量中减去5。

在创建Car对象的程序中演示类,然后调用加速函数五次。每次调用加速功能后,获取当前车速并显示。然后,调用制动功能5次。每次调用制动功能后,获取当前车速并显示它。

#include<iostream>
#include<string>

using namespace std;

class Car
{
private:
int year;
string make;
int speed = 0;

public:
void setYear(int);
void setMake(string);
void setSpeed(int);
int getYear();
string getMake();
int getSpeed();
void accelerate();
void brake();


};
void Car::setYear(int y)
{year = y;}
int Car::getYear(){
return year;}

void Car::setMake(string m)
{make = m;}
string Car::getMake(){
return make;}

void Car::setSpeed(int spd)
{speed = spd;}
int Car::getSpeed(){
return speed;}

void Car::accelerate()
{speed +=5;}

void Car::brake()
{
if( speed > 5 )
    speed -=5;
else speed = 0 ;
}


int main()
{
Car myCar;
int bYear = 0;
string bMake;
cout << "Please enter the year of the vehicle.\n";
cin >> bYear;
cout << "Please enter the make of the vehicle.\n";
cin >> bMake;

myCar.setYear(bYear);
cout << "You entered the year of the car as " << myCar.getYear() << endl;
myCar.setMake(bMake);
cout << "You entered the make of the car as " << myCar.getMake() << endl;
int i = 0;
for (; i<5; ++i)
{
    myCar.accelerate();
    cout << "Accelerating.\n" << "The current speed of the car is: " << myCar.getSpeed() << endl;


}
{
    int j = 0;
    for (; j<5; ++j)
    {
        myCar.brake();
        cout << "Decelerating.\n"  << "The current speed of the car is: " << myCar.getSpeed()<<endl;

    }



}
}

1 个答案:

答案 0 :(得分:0)

你在这里。

您可以在类定义中定义构造函数,如此

Car( int year, const std::string &make ) : year( year ), make( make ), speed( 0 )
{
}

或者在类定义中声明它

Car( int year, const std::string &make );

然后在类定义之外定义它

Car::Car( int year, const std::string &make ) : year( year ), make( make ), speed( 0 )
{
}

同时删除这些功能(分配说明不需要它们)

void setYear(int);
void setMake(string);
void setSpeed(int);

并使用限定符const

声明这些函数
int getYear() const;
string getMake() const;
int getSpeed() const;

考虑到首先你应该为构造函数输入值,然后才定义类的对象

int main()
{
int bYear = 0;
string bMake;
cout << "Please enter the year of the vehicle.\n";
cin >> bYear;
cout << "Please enter the make of the vehicle.\n";
cin >> bMake;

Car myCar( bYear, bMake );
^^^^^^^^^^^^^^^^^^^^^^^^^