#include <iostream> using namespace std; class polygon{ protected: int number; private: int side_length[100]; public: polygon(){} polygon(int a = 0){ number = 0; int in; cin>>in; while(in != -1){ side_length[number++] = in; cin>>in; } }; int perimeter(){ int sum = 0; for (int i = 0; i < number; i++){ sum += side_length[i]; } return sum; }; void display(){ cout<<number<<" "<<perimeter()<<endl; }; }; class rectangle: public polygon{ private: int height; int width; public: rectangle(){ int h, w; cin>>h>>w; height = h; width = w; } int perimeter(){ return 2*(height + width); } void display(){ cout<<4<<" "<<perimeter()<<endl; } }; class equal_polygon: public polygon{ private: int side_len; public: equal_polygon(){ int n, s; cin>>n>>s; number = n; side_len = s; } int perimeter(){ return number*side_len; } void display(){ cout<<number<<" "<<perimeter()<<endl; } };为什么这样不行
时间: 2024-02-16 08:07:00 浏览: 84
你没有提供你认为“不行”的具体表现,因此很难回答你的问题。但是,根据你提供的代码,可能出现以下问题:
1. polygon 类的构造函数可以接受一个整数参数,但没有使用它。这可能会导致程序的逻辑错误。
2. 在 rectangle 和 equal_polygon 类中,你没有调用 polygon 的构造函数,导致 polygon 类的数据成员没有被正确初始化。
3. 在子类中,你重写了 polygon 类的 perimeter() 和 display() 函数。这样做是可以的,但你需要使用 virtual 关键字来定义它们,以确保正确调用子类的函数。
4. 在 equal_polygon 类中,你在构造函数中直接修改了 polygon 类的数据成员 number。这样做可能会导致数据不一致的问题,因为 number 应该只能通过 polygon 类的构造函数来设置。
解决这些问题后,你的代码可能会更可靠和正确。
相关问题
#include <stdio.h> #include <iostream> #include <vector> using namespace std; class Solution { pub
这是一个C++程序片段,它包含了一个名为`Solution`的类,并使用了`std`命名空间。这里的关键点包括:
1. `#include <stdio.h>` 和 `#include <iostream>`:分别包含了标准输入输出库,通常用于控制台输入输出操作。
2. `#include <vector>`:引入了`vector`容器,这是C++ STL(Standard Template Library,标准模板库)的一部分,常用于动态数组的操作,比如存储和管理元素集合。
`class Solution { ... }`: 定义了一个名为`Solution`的类。类是一种用户自定义的数据结构,可以封装数据和函数,提供了一种组织代码的方式。在这个类中,可能会有公共属性(成员变量)和公开的方法(成员函数),它们由`public`关键字修饰,表示可以从类的外部直接访问。
`pub`应该是打字错误,正确的可能是`public`,如果在这里,则表示类的所有成员对外可见。例如,`public:` 可能后面跟着声明的一些类的成员函数。
为了完整地介绍这个类,我们需要看到完整的类定义以及如何实例化和使用它的示例。如果没有具体的实现,我们无法详细说明。不过,一般来说,类可能会有类似这样的构造函数、成员函数等:
```cpp
public:
// 构造函数
Solution(int initialSize = 0) {
elements.resize(initialSize);
}
// 成员函数示例,可能用于处理vector内容
void addElement(int value) {
elements.push_back(value);
}
private:
vector<int> elements; // 私有成员变量,只能通过公有方法访问
};
```
完成Time类的定义 裁判测试程序样例: #include <iostream> using namespace std; class Time{ private: int hour,mi
在C++中,你可以按照以下方式完成`Time`类的定义,它包含小时(hour)和分钟(minute)作为私有成员变量,并提供公有的构造函数、设置时间和获取时间的方法:
```cpp
class Time {
private:
// 私有成员变量
int hour;
int minute;
public:
// 构造函数,初始化时间
Time(int h = 0, int m = 0) : hour(h), minute(m) {}
// 设置时间
void setTime(int h, int m) {
if (h >= 0 && h <= 23 && m >= 0 && m <= 59) {
hour = h;
minute = m;
} else {
cout << "Invalid time format!" << endl;
}
}
// 获取时间
void displayTime() const {
cout << "Current time: " << hour << ":" << minute << endl;
}
// 其他可能的方法,如增加或减少分钟等...
private:
// 防止直接修改私有变量
void setHour(int h) { hour = h; }
void setMinute(int m) { minute = m; }
};
```
这个`Time`类包含了基本的时间管理功能,并确保了时间值的有效范围。如果你想添加更多功能,比如检查是否为有效日期或进行时间加减操作,可以适当扩展。
阅读全文
相关推荐















