编写一个面向对象和类的c++程序。要求包括: 1类的声明和定义在一个源文件,主函数在另一 个文件中; 2使用预编译指令; 3类的成员包括静态数据成员; 4类的成员函数包含复制构造函数; 5类的成员函数包括操作符重载; 6 主函数体现类对象的数据保护和共享特性。
时间: 2024-10-21 17:15:38 浏览: 23
源文件filecpp中主函数的定义-c++课程设计课件
为了满足以上要求,我们首先创建一个名为`MyClass.h`的头文件,用于声明类,并在另一个名为`Main.cpp`的源文件中包含这个头文件并实现相关的功能。
**MyClass.h**
```cpp
// MyClass.h
#ifndef MYCLASS_H
#define MYCLASS_H
#include <iostream>
class MyClass {
public:
// 静态数据成员
static int staticData;
// 复制构造函数
MyClass(const MyClass& other) : sharedData(other.sharedData) {}
// 操作符重载示例 - 加法
MyClass operator+(const MyClass& other) {
MyClass result(*this);
result.sharedData += other.sharedData;
return result;
}
private:
// 数据保护,只允许通过成员函数访问
int sharedData;
};
#endif // MYCLASS_H
```
**Main.cpp**
```cpp
// Main.cpp
#include "MyClass.h"
#include <iostream>
int MyClass::staticData = 0; // 初始化静态数据成员
int main() {
// 在main函数中创建对象
MyClass obj1, obj2(3); // 直接创建,无参数则默认构造
MyClass obj3(obj2); // 使用复制构造函数
// 操作符重载示例
MyClass obj4 = obj1 + obj3; // 调用加法操作符
// 输出静态数据成员和对象的共享数据
std::cout << "Static data: " << MyClass::staticData << "\n";
std::cout << "Object1 shared data: " << obj1.sharedData << "\n";
std::cout << "Object4 (obj1+obj3) shared data: " << obj4.sharedData << "\n";
return 0;
}
```
在这个例子中,我们在`MyClass`类中定义了一个静态数据成员`staticData`和一个私有成员变量`sharedData`。复制构造函数允许创建新的对象时复制已有对象的状态,而操作符重载使得我们可以像处理基本类型那样使用类的对象。在`main()`函数中,我们展示了如何创建对象、使用复制构造函数以及调用操作符重载方法。
阅读全文