大航母网站建设怎么样,富阳网站设计,在线网页转app,百度网站建设目标目录#x1f60b;
任务描述
相关知识
一、类的声明和使用
1. 类的声明基础
2. 类的访问控制
3. 类的使用
二、类的声明和对象的声明
1. 类声明中的函数定义
2. 对象声明的多种方式
三、构造函数和析构函数的执行过程
1. 构造函数
2. 析构函数
实验步骤
测试说明…目录
任务描述
相关知识
一、类的声明和使用
1. 类的声明基础
2. 类的访问控制
3. 类的使用
二、类的声明和对象的声明
1. 类声明中的函数定义
2. 对象声明的多种方式
三、构造函数和析构函数的执行过程
1. 构造函数
2. 析构函数
实验步骤
测试说明
通关代码
测试结果 任务描述 本关任务声明一个CPU类包含等级rank、频率frequency、电压voltage等属性以及两个公有成员函数run、stop。 相关知识 为了完成本关任务你需要掌握 类的声明和使用。类的声明和对象的声明。构造函数和析构函数的执行。 一、类的声明和使用 1. 类的声明基础 在 C 中类是创建对象的蓝图。类的声明定义了类的成员包括数据成员变量和成员函数方法。一个简单的类声明示例如下 class MyClass {
public:int myVariable;void myFunction() {// 函数体这里可以对数据成员进行操作myVariable 10;}
}; 在这个例子中MyClass是类名myVariable是数据成员myFunction是成员函数。public关键字表示这些成员可以在类的外部访问。 2. 类的访问控制 除了public还有private和protected访问控制符。private成员只能在类的内部访问protected成员可以在类内部和派生类继承关系中的子类中访问。例如 class MyClass {
private:int privateVariable;
protected:int protectedVariable;
public:int publicVariable;void accessMembers() {privateVariable 1; // 在类内部可以访问private成员protectedVariable 2;publicVariable 3;}
}; 3. 类的使用 声明了类之后可以通过创建对象来使用它。对象是类的一个实例占用内存空间并存储类的数据成员的值。创建对象的语法如下 MyClass object; 这里object是MyClass类的一个对象。可以通过对象访问类的成员如 object.publicVariable 5;
object.myFunction(); 二、类的声明和对象的声明 1. 类声明中的函数定义 成员函数可以在类内部定义也可以在类外部定义。如果在类外部定义需要使用作用域解析运算符::来指定函数所属的类。例如 class MyClass {
public:int myVariable;void myFunction();
};
void MyClass::myFunction() {myVariable 20;
} 2. 对象声明的多种方式 在栈上声明对象这是最常见的方式对象的内存由编译器自动分配和释放。例如 MyClass stackObject; 在堆上声明对象使用new关键字在堆上动态分配内存来创建对象。这种方式需要手动释放内存使用delete关键字。例如 MyClass* heapObject new MyClass;
// 使用对象
delete heapObject; 对象数组声明可以声明对象数组例如 MyClass arrayOfObjects[5]; 三、构造函数和析构函数的执行过程 1. 构造函数 构造函数是一种特殊的成员函数用于在创建对象时初始化对象的数据成员。构造函数的名称与类名相同没有返回值类型包括void。例如 class MyClass {
public:int value;MyClass() {value 0;}
}; 这是一个默认构造函数当创建MyClass对象时如果没有提供初始化参数就会调用这个默认构造函数。也可以有带参数的构造函数例如 class MyClass {
public:int value;MyClass(int initValue) {value initValue;}
}; 构造函数的执行时机是在对象创建时。例如 MyClass object1; // 调用默认构造函数
MyClass object2(5); // 调用带参数的构造函数参数为5 2. 析构函数 析构函数是在对象销毁时自动调用的特殊成员函数用于清理对象占用的资源。析构函数的名称是在类名前加~。例如 class MyClass {
public:int* dynamicArray;MyClass() {dynamicArray new int[10];}~MyClass() {delete[] dynamicArray;}
}; 在这个例子中构造函数中动态分配了一个整数数组析构函数用于释放这个数组占用的内存。析构函数的执行时机是在对象生命周期结束时比如对象所在的作用域结束如果是栈对象或者使用delete释放堆对象时。例如 {MyClass localObject;// 对象在这个作用域内有效
} // 作用域结束localObject的析构函数被调用
MyClass* pointerObject new MyClass;
// 使用对象
delete pointerObject; // 调用析构函数 实验步骤 定义一个枚举类型 CPU_Rank其形式为 enum CPU_Rank {P1 1, P2, P3, P4, P5, P6, P7}以此来表征 CPU 的不同等级。声明 CPU 类在类中设置等级rank、频率frequency、电压voltage等数据成员并将它们设置为私有属性以确保数据的封装性和安全性。声明成员函数 run 和 stop这两个函数的功能是输出相应的提示信息从而直观地展示函数的执行情况。在构造函数和析构函数中也添加输出提示信息的语句以便清晰地观察对象的创建与销毁过程。在主程序中创建一个 CPU 类的对象并调用其成员函数在此过程中仔细观察类对象的构造与析构的先后顺序以及各个成员函数被调用时的具体情况深入理解类与对象在 C 程序中的运行机制。 测试说明 根据提示在右侧编辑器补充代码平台会对你编写的代码进行测试。 预期输出 构造了一个CPU!
CPU开始运行!
CPU停止运行!
析构了一个CPU! 通关代码
#include iostream
using namespace std;enum CPU_Rank {P11,P2,P3,P4,P5,P6,P7};
class CPU
{
private:CPU_Rank rank;int frequency;float voltage;
public:CPU (CPU_Rank r, int f, float v){/********** Begin **********/rank r;frequency f;voltage v;cout 构造了一个CPU!endl;/********** End **********/}~CPU () { /********** Begin **********/cout析构了一个CPU!endl;/********** End **********/}CPU_Rank GetRank() const { return rank; }int GetFrequency() const { return frequency; }float GetVoltage() const { return voltage; }void SetRank(CPU_Rank r) { rank r; }void SetFrequency(int f) { frequency f; }void SetVoltage(float v) { voltage v; }void Run() {/********** Begin **********/cout CPU开始运行!endl;/********** End **********/}void Stop() {/********** Begin **********/cout CPU停止运行!endl;/********** End **********/}
};int main()
{CPU a(P6,300,2.8);a.Run();a.Stop();
}测试结果