本关任务:声明一个CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,以及两个公有成员函数run、stop。
为了完成本关任务,你需要掌握:
class MyClass {
public:
int myVariable;
void myFunction() {
// 函数体,这里可以对数据成员进行操作
myVariable = 10;
}
};
MyClass
是类名,myVariable
是数据成员,myFunction
是成员函数。public
关键字表示这些成员可以在类的外部访问。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;
}
};
MyClass object;
object
是MyClass
类的一个对象。可以通过对象访问类的成员,如:object.publicVariable = 5;
object.myFunction();
::
来指定函数所属的类。例如:class MyClass {
public:
int myVariable;
void myFunction();
};
void MyClass::myFunction() {
myVariable = 20;
}
MyClass stackObject;
new
关键字在堆上动态分配内存来创建对象。这种方式需要手动释放内存,使用delete
关键字。例如:MyClass* heapObject = new MyClass;
// 使用对象
delete heapObject;
MyClass arrayOfObjects[5];
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
~
。例如:class MyClass {
public:
int* dynamicArray;
MyClass() {
dynamicArray = new int[10];
}
~MyClass() {
delete[] dynamicArray;
}
};
delete
释放堆对象时。例如:{
MyClass localObject;
// 对象在这个作用域内有效
} // 作用域结束,localObject的析构函数被调用
MyClass* pointerObject = new MyClass;
// 使用对象
delete pointerObject; // 调用析构函数
根据提示,在右侧编辑器补充代码,平台会对你编写的代码进行测试。
预期输出:
构造了一个CPU!
CPU开始运行!
CPU停止运行!
析构了一个CPU!
#include <iostream>
using namespace std;
enum CPU_Rank {P1=1,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();
}