class getter rand variable

class getter rand variable

本文关键字:variable rand getter class      更新时间:2023-10-16
#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的参数提供默认值,但是您没有初始化类属性票和一半。

您可能已经以默认值初始化了Passenger::Passenger中的这些参数,但是除非将这些参数分配给函数成员,否则属性Passenger::ticketPassenger::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
};