定义一个student(学生)类,该类中的私有成员有学生姓名,年龄和成绩,其中姓名定义成char*,年龄定义成 int 型,成绩定义 成double型;白定义构造函数和析构函数。观察构造函数和析构函数的调用次序和次数
时间: 2023-05-30 09:07:46 浏览: 112
以下是定义了一个student类的示例代码:
```c++
#include <cstring>
#include <iostream>
class Student {
public:
Student(const char* name, int age, double score)
: age(age), score(score) {
this->name = new char[strlen(name) + 1];
strcpy(this->name, name);
std::cout << "Constructor called for " << this->name << std::endl;
}
~Student() {
delete[] name;
std::cout << "Destructor called for " << this->name << std::endl;
}
private:
char* name;
int age;
double score;
};
int main() {
Student s1("Alice", 20, 90.5);
Student s2("Bob", 21, 85.0);
return 0;
}
```
在这个示例中,我们定义了一个包含私有成员的`Student`类,并在其中定义了构造函数和析构函数。构造函数用于初始化对象的属性,析构函数用于在对象销毁时释放资源。
在`main`函数中,我们创建了两个`Student`对象`s1`和`s2`,并传递了它们的姓名、年龄和成绩。在对象创建时,构造函数会被调用,输出对应的信息;在对象销毁时,析构函数会被调用,同样输出对应的信息。
运行上述代码,输出结果如下:
```
Constructor called for Alice
Constructor called for Bob
Destructor called for Bob
Destructor called for Alice
```
我们可以看到,构造函数在对象创建时被调用,析构函数在对象销毁时被调用。在本例中,对象`s1`和`s2`的销毁顺序与创建顺序相反,这是因为对象的销毁是按照它们在内存中的分配顺序进行的。同时,我们也可以看到,每个对象对应的构造函数和析构函数都只被调用了一次,这是因为我们只创建了两个对象。
阅读全文