我一直在靠墙试图找出"构造函数"这项任务的一部分。这包括阅读教科书和在线浏览。有人可以指出我正确的方向吗?下面的代码工作正常,只需要添加一个构造函数。
以下是此作业的说明: 汽车类说明:
写一个名为' 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;
}
}
}
答案 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 );
^^^^^^^^^^^^^^^^^^^^^^^^^