c++ - 类 getter rand 变量

标签 c++ variables random

#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/

相关文章:

javascript - 如何将字符串添加到变量;

Java Logger 每次都会创建新的 txt 文件

c++ - 具有 QObject 继承的单例 - Qt

c++ - 使用 C++ 和程序集在运行时分配和创建新函数

Java 对象从另一个实例获取变量?

c - C 中的随机二维数组

c++ - 两个值之间的随机数

c++ - 可视化多维数组如何放置在内存中的方法?

c++ - 静态库中的 PIC 性能

perl - 如何在两个不同的 perl 脚本之间共享/导出全局变量?