#include <iostream>
#include <cstdlib>
using namespace std;
class Passenger {
private:
int ticket ;
int half ;
public:
Passenger(int ticket=rand() % 2, int half=rand() % 2) { // Construct passenger
cout << "passenger was constructed with " << ticket << " ticket and " << half << " half ticket" <<endl;
}
~Passenger() {
cout << "passenger was destructed" <<endl;
}
int getTicket()const{
cout << ticket <<endl;
return ticket;
};
int getHalf()const{
return half;
};
};
int main(){
Passenger m;
m.getTicket();
}
getTicket
总是打印 64 而不是调用构造函数时打印的 0 或 1。
我无法用这个修复它,而且我不知道 rand() 的很多东西
最佳答案
您正在为构造函数 Passenger
的参数提供默认值,但您没有初始化类属性 ticket 和 half。
您可能已经使用默认值初始化了 Passenger::Passenger
中的那些参数,但是除非您将这些参数分配给您的函数成员,否则属性 Passenger::ticket
并且 Passenger::half
不会使用您似乎想要分配给它们的值进行初始化。
本质上,您应该按如下方式更新您的构造函数:
Passenger::Passenger(int ticket=rand() % 2, int half=rand() % 2) {
// Construct passenger
cout << "passenger was constructed with " << ticket << " ticket and " << half << " half ticket" <<endl;
this->ticket = ticket;
this->half = half;
}
您还可以使用下面给出的初始化列表。
class Passenger {
Passenger(int ticket=rand() % 2, int half=rand() % 2) : ticket(ticket), half(half) {}
... // Rest of the class definition
};
关于c++ - 类 getter rand 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47769835/