C++ MyInteger 类实现:整数操作与转换
C++ MyInteger 类实现:整数操作与转换
本文将介绍如何使用 C++ 设计一个名为 MyInteger 的类,该类可以对整数进行各种操作,例如判断奇偶性、素数、比较值和字符串转换。
MyInteger 类设计
MyInteger 类包含以下成员:
-
数据域:
value: 一个 int 型数据域,保存此对象表示的 int 型值。
-
构造函数:
MyInteger(int value): 用指定的 int 型值创建一个 MyInteger 对象。
-
获取函数:
get(): 返回 int 型值的 get 函数。
-
只读函数:
isEven(): 在整数为偶数的情况下返回真。isOdd(): 在整数为奇数的情况下返回真。isPrime(): 在整数为素数的情况下返回真。
-
静态函数:
isEven(int): 在给定整数为偶数的情况下返回真。isOdd(int): 在给定整数为奇数的情况下返回真。isPrime(int): 在给定整数为素数的情况下返回真。isEven(const MyInteger&): 在给定对象表示的整数为偶数的情况下返回真。isOdd(const MyInteger&): 在给定对象表示的整数为奇数的情况下返回真。isPrime(const MyInteger&): 在给定对象表示的整数为素数的情况下返回真。
-
只读函数:
equals(int): 在本对象表示的整数值等于给定值的情况下返回真。equals(const MyInteger&): 在本对象表示的整数值等于给定对象表示的整数值的情况下返回真。
-
静态函数:
parseInt(const string&): 将一个字符串转换为一个 int 型值。
MyInteger 类实现
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
class MyInteger
{
public:
MyInteger(int value) // 构造函数
{
this->value = value;
}
int get() const // 返回当前对象的整数值
{
return value;
}
bool isEven() const // 判断当前对象的整数值是否为偶数
{
return value % 2 == 0;
}
bool isOdd() const // 判断当前对象的整数值是否为奇数
{
return value % 2 != 0;
}
bool isPrime() const // 判断当前对象的整数值是否为素数
{
if (value <= 1)
{
return false;
}
for (int i = 2; i <= sqrt(value); i++)
{
if (value % i == 0)
{
return false;
}
}
return true;
}
static bool isEven(int value) // 判断给定整数值是否为偶数
{
return value % 2 == 0;
}
static bool isOdd(int value) // 判断给定整数值是否为奇数
{
return value % 2 != 0;
}
static bool isPrime(int value) // 判断给定整数值是否为素数
{
if (value <= 1)
{
return false;
}
for (int i = 2; i <= sqrt(value); i++)
{
if (value % i == 0)
{
return false;
}
}
return true;
}
static bool isEven(const MyInteger& obj) // 判断给定对象的整数值是否为偶数
{
return obj.isEven();
}
static bool isOdd(const MyInteger& obj) // 判断给定对象的整数值是否为奇数
{
return obj.isOdd();
}
static bool isPrime(const MyInteger& obj) // 判断给定对象的整数值是否为素数
{
return obj.isPrime();
}
bool equals(int value) const // 判断当前对象的整数值是否等于给定值
{
return this->value == value;
}
bool equals(const MyInteger& obj) const // 判断当前对象的整数值是否等于给定对象的整数值
{
return this->value == obj.value;
}
static int parseInt(const string& str) // 将字符串转换为整数值
{
int value = 0;
for (char c : str)
{
if (isdigit(c))
{
value = value * 10 + (c - '0');
}
}
return value;
}
private:
int value; // 当前对象所代表的整数值
};
int main()
{
MyInteger num1(5);
cout << 'num1 = ' << num1.get() << endl;
cout << 'isEven(num1) = ' << MyInteger::isEven(num1) << endl;
cout << 'isOdd(num1) = ' << MyInteger::isOdd(num1) << endl;
cout << 'isPrime(num1) = ' << MyInteger::isPrime(num1) << endl;
MyInteger num2(6);
cout << 'num2 = ' << num2.get() << endl;
cout << 'isEven(num2) = ' << MyInteger::isEven(num2) << endl;
cout << 'isOdd(num2) = ' << MyInteger::isOdd(num2) << endl;
cout << 'isPrime(num2) = ' << MyInteger::isPrime(num2) << endl;
cout << 'num1 equals 5? ' << num1.equals(5) << endl;
cout << 'num1 equals num2? ' << num1.equals(num2) << endl;
string str = '12345';
int value = MyInteger::parseInt(str);
cout << 'parseInt('' << str << '') = ' << value << endl;
return 0;
}
测试用例
以上代码包含一个 main() 函数,用于测试 MyInteger 类中的所有函数。程序输出如下:
num1 = 5
isEven(num1) = 0
isOdd(num1) = 1
isPrime(num1) = 1
num2 = 6
isEven(num2) = 1
isOdd(num2) = 0
isPrime(num2) = 0
num1 equals 5? 1
num1 equals num2? 0
parseInt('12345') = 12345
总结
MyInteger 类是一个简单但实用的工具,可以方便地对整数进行各种操作。您可以根据需要扩展该类,添加更多功能,例如支持负数、浮点数、进制转换等。
原文地址: https://www.cveoy.top/t/topic/m5Wj 著作权归作者所有。请勿转载和采集!