a
作成してb
プライベートにし、ゲッターを提供して、クラスの外部から値にアクセスすることができます。
class MyClass
{
private:
int a, b; // private
public:
int getA() { return a; }
int getB() { return b; }
MyClass()
{
int relatedVariable = rand() % 250;
a = relatedVariable % 100;
b = abs(relatedVariable - 150);
}
};
または、サブオブジェクト初期化子を使用して、何らかの方法で乱数をキャッシュすることもできます。最適化をオンにすると、生成されたプログラム テキストの一時変数が削除されることさえあります。
class MyClass
{
private:
int temp; // this is a workaround
public:
const int a;
const int b;
MyClass() : temp(rand() % 250), a(temp % 100), b(abs(temp - 150)) {}
};
サブオブジェクトの構築は、メンバーがクラスで宣言された順序で行われ、初期化リスト内のサブオブジェクトの順序は無視されることに注意してください。
または、怠け者で、最初の乱数のみを保存し、a, b
オンデマンドで生成することもできます。