目录
在C++中,构造函数、普通成员函数、拷贝构造函数和析构函数是类成员函数的几种类型。
一、构造函数
构造函数用于创建和初始化对象,其函数名与类名相同,没有返回类型。在实例化对象时,构造函数会自动被调用,并初始化对象的成员变量。例如,下面是一个简单的构造函数的示例:
class Person { // 定义类Person
public:
Person() { // 默认构造函数,初始化age为0,name为"Unknown"
age = 0;
name = "Unknown";
}
Person(int a, string n) { // 带参数的构造函数,初始化age和name
age = a;
name = n;
}
private:
int age; // 成员变量age
string name; // 成员变量name
};
上述代码中,Person()
是默认构造函数,Person(int a, string n)
是带参数的构造函数。在实例化Person
对象时,如果没有传递参数,则默认调用Person()
构造函数;如果传递了参数,则调用Person(int a, string n)
构造函数。
二、普通成员函数
普通成员函数是一个普通的函数,它可以访问类中的成员变量和成员函数,但不包含 static 关键字。例如,下面是一个简单的普通成员函数的示例:
// 定义了一个名为 Person 的类
class Person {
public:
// 定义了一个公有的成员函数 setName,它有一个参数 n,类型为 string
void setName(string n) {
// 在成员变量 name 中存储参数 n 的值
name = n;
}
private:
// 定义了一个私有的成员变量 name,类型为 string
string name;
};
上述代码定义了一个名为Person
的类,该类具有一个公有的成员函数setName
,用于设置类的成员变量name
的值。在该类的私有成员中定义了一个成员变量name
,用于存储Person
对象的名称。
三、拷贝构造函数
拷贝构造函数用于复制一个对象,其函数名与类名相同,并且参数是一个指向该类对象的常引用。拷贝构造函数的作用是在创建一个新的对象时,以现有对象的值初始化它。例如,下面是一个简单的拷贝构造函数的示例:
class Person { // 定义 Person 类
public:
Person(const Person& other) { // 拷贝构造函数,参数为指向该类对象的常引用
age = other.age; // 复制现有对象的 age 成员变量值
name = other.name; // 复制现有对象的 name 成员变量值
}
private:
int age; // 年龄成员变量
string name; // 姓名成员变量
};
上述代码定义了一个名为Person
的类,其中包括一个拷贝构造函数和两个私有成员变量。拷贝构造函数用于复制一个Person
对象,其参数为指向该类对象的常引用。在构造新对象时,拷贝构造函数会复制现有对象的成员变量值,并将它们赋值给新对象的对应成员变量。age
和name
成员变量分别表示人物的年龄和姓名。
四、析构函数
析构函数是用于销毁对象的函数,其函数名与类名相同,但以 ~ 开头,并且没有返回类型。析构函数在对象生命周期结束时自动调用,用于清理对象使用的资源。例如,下面是一个简单的析构函数的示例:
class Person { // 声明一个类Person
public:
~Person() { // 定义析构函数,以 ~ 开头,没有返回类型
cout << "Person object is destroyed" << endl; // 输出一条消息,表示对象被销毁
}
private:
int age; // 声明一个私有成员变量age
string name; // 声明一个私有成员变量name
};
上述代码中,~Person()
是析构函数,当Person
对象被销毁时,会自动调用该函数,输出一条销毁对象的消息。