具有不变性的快速类 int 类型? C++
Quick int-like type with invariant? C++
有没有一种快速的方法可以在构造函数中定义一个具有 int 成员和不变量的类型...
例如
class Age {
public:
Age(int age) {
Expects(0 <= age && age <= 125);
age_ = age;
}
private:
int age_;
}
...然后让类型像 int 一样可用?
Age a1 {32};
Age a2 {40};
cout << "Combined ages: " << a1 + a1;
Age a3 = a1 * 2;
// ...etc. etc.
(或者是覆盖所有运算符的唯一方法?)
谢谢,约翰。
您可以添加 operator int()
返回值,它将作为整数使用。
Expects
可以拼写为 assert()
,然后您可以通过转换运算符公开年龄,这将允许所有其他操作起作用:
class Age {
public:
Age(int a) : age_(a) {
assert(0 <= age_ && age_ <= 125);
}
operator int() const { return age_; }
private:
int age_;
};
旁注将年龄限制为 125 岁有点悲观。梦想远大!
有没有一种快速的方法可以在构造函数中定义一个具有 int 成员和不变量的类型...
例如
class Age {
public:
Age(int age) {
Expects(0 <= age && age <= 125);
age_ = age;
}
private:
int age_;
}
...然后让类型像 int 一样可用?
Age a1 {32};
Age a2 {40};
cout << "Combined ages: " << a1 + a1;
Age a3 = a1 * 2;
// ...etc. etc.
(或者是覆盖所有运算符的唯一方法?)
谢谢,约翰。
您可以添加 operator int()
返回值,它将作为整数使用。
Expects
可以拼写为 assert()
,然后您可以通过转换运算符公开年龄,这将允许所有其他操作起作用:
class Age {
public:
Age(int a) : age_(a) {
assert(0 <= age_ && age_ <= 125);
}
operator int() const { return age_; }
private:
int age_;
};
旁注将年龄限制为 125 岁有点悲观。梦想远大!