模块 4 · 第 2 课(共 2)课程中的10/18~12 min
模块课程(2/2)
构造函数和析构函数
构造函数和析构函数是管理对象生命周期的特殊成员函数:它们的创建(初始化)和销毁(资源清理)。
构造函数
当在内存中创建该类的对象时,会自动调用 构造函数。
- 它与类具有相同的名称。
- 它没有返回类型(甚至没有
void)。 - 它可以重载以接受不同的参数集。
C++
#include <iostream>
#include <string>
class Item {
private:
std::string name;
double price;
public:
// Parameterized constructor
Item(std::string itemName, double itemPrice) {
name = itemName;
price = itemPrice;
std::cout << "Object " << name << " created." << std::endl;
}
void display() {
std::cout << name << ": " << price << " EUR" << std::endl;
}
};
int main() {
// Implicit call to the constructor passing parameters
Item book("Libro C++", 29.99);
book.display();
return 0;
}默认构造函数
如果没有定义任何构造函数,C++编译器会生成一个不带参数的默认构造函数。但是,如果您编写带参数的自定义构造函数,编译器将不再自动生成默认构造函数,因此您需要在需要时显式定义它:
C++
class Point {
public:
int x;
int y;
// Explicit default constructor
Point() {
x = 0;
y = 0;
}
};析构函数
当对象超出范围或从内存中显式删除时,会自动调用 析构函数。
- 它与 ** 与前面带有波形符
~** 的类同名(例如~Item())。 - 它不接受参数并且没有返回类型。
- 它用于释放资源(例如,关闭文件、释放动态分配的内存)。
C++
class ResourceManager {
public:
~ResourceManager() {
// Cleanup code
std::cout << "Resources released." << std::endl;
}
};自己尝试一下
锻炼#cpp.m4.l2.e1
尝试:0加载中...
使用私有成员 std::string username 定义一个名为 User 的类。添加一个接受字符串 (User(std::string name)) 并使用它来初始化用户名的公共构造函数。添加一个返回用户名的公共 getter std::string getUsername() 。在 main 中,创建一个传递“Alice”作为名称的 User 对象,并使用 std::cout 打印其用户名。
正在加载编辑器...
显示提示
构造函数与类具有相同的名称,并且没有指定任何返回类型,甚至没有指定“void”。
3 次尝试后可用的解决方案
锻炼#cpp.m4.l2.e2
尝试:0加载中...
定义一个名为 Point 的类,它具有两个公共整数成员:x 和 y。添加一个默认构造函数(无参数),将 x 和 y 初始化为 0。在 main 中,使用默认构造函数创建一个 Point 对象并打印 x 和 y。
正在加载编辑器...
显示提示
默认构造函数不带参数:`Point() { x = 0; y = 0; }`。
3 次尝试后可用的解决方案