完整的类模板,计算器,编写长方形模板,计算周长,面积,函数在类外定义
时间: 2024-09-10 08:25:34 浏览: 89
在C++中,我们可以创建一个完整的类模板,例如一个通用的形状类模板,如`Shape<T>`,其中`T`是一个类型参数,代表形状的尺寸(比如长度或宽度)。然后我们可以特别化这个模板来创建具体的形状,如`Rectangle`,它将继承自`Shape`并添加特定于矩形的功能。
下面是一个简单的`Rectangle`类模板示例,包含了计算周长和面积的方法:
```cpp
template <typename T>
class Shape {
public:
virtual ~Shape() {}
// 默认虚析构函数,用于多态
};
template <typename T>
class Rectangle : public Shape<T> {
private:
T length;
T width;
public:
// 构造函数
Rectangle(T len, T wid) : length(len), width(wid) {}
// 计算周长
T perimeter() const {
return 2 * (length + width);
}
// 计算面积
T area() const {
return length * width;
}
// 函数可以在类外定义,作为友元函数访问私有数据
friend std::ostream& operator<<(std::ostream& os, const Rectangle<T>& rect);
};
// 友元函数实现,允许外部直接访问矩形的信息
template <typename T>
std::ostream& operator<<(std::ostream& os, const Rectangle<T>& rect) {
os << "Rectangle with length: " << rect.length << ", width: " << rect.width;
return os;
}
int main() {
Rectangle<int> rectangle(4, 5);
std::cout << "Perimeter: " << rectangle.perimeter() << std::endl;
std::cout << "Area: " << rectangle.area() << std::endl;
return 0;
}
```
在这个例子中,我们创建了一个矩形类,并展示了如何在类内定义成员函数(如`perimeter()`和`area()`)以及在类外通过友元函数提供额外操作。用户可以根据需要创建不同大小的矩形实例,并计算它们的周长和面积。
阅读全文