请设计一个IP地址类,该类存储一个IP地址及对应的子网掩码信息。通过下面写好的main函数来使用IP地址类。 int main(){ int n,m; cin>>n>>m; IPAddr myip(n,m); myip.showIPInfo(); return 0; } 输入描述 输入一个整数n和一个4~30之间的正整数m,使用n来初始化IP地址(IP地址的二进制表示和n一摸一样),使用m来初始化子网掩码,m代表子网掩码中1的个数 输出描述 分三行分别输出IP地址、子网掩码和网络地址的点分十进制形式
时间: 2024-02-03 13:04:41 浏览: 64
好的,我来设计一个IP地址类。
```cpp
#include <iostream>
#include <bitset>
#include <sstream>
using namespace std;
class IPAddr {
private:
bitset<32> ip;
bitset<32> mask;
public:
IPAddr(int n, int m) {
ip = bitset<32>(n);
mask = bitset<32>((unsigned(-1) << (32 - m)));
}
void showIPInfo() {
cout << "IP地址:" << ip.to_ulong() << endl;
cout << "子网掩码:" << mask.to_ulong() << endl;
cout << "网络地址:" << (ip & mask).to_ulong() << endl;
}
};
```
在这个IP地址类中,我们使用了bitset来存储IP地址和子网掩码,方便进行位运算。在构造函数中,传入整数n和m,使用n来初始化IP地址,使用m来初始化子网掩码。在showIPInfo函数中,我们分别输出IP地址、子网掩码和网络地址的点分十进制形式。
现在我们来看一下使用IP地址类的main函数。
```cpp
int main() {
int n, m;
cin >> n >> m;
IPAddr myip(n, m);
myip.showIPInfo();
return 0;
}
```
我们首先输入n和m,然后用它们来初始化IPAddr对象myip。最后调用myip的showIPInfo函数来输出IP地址、子网掩码和网络地址的点分十进制形式。
希望这个IP地址类能够满足你的要求。
阅读全文