c构造函数和析构函数
- 格式:doc
- 大小:13.75 KB
- 文档页数:6
- 1 - c构造函数和析构函数
C++是一门面向对象的编程语言,它支持类和对象的概念。类是一种用户自定义的数据类型,它可以封装数据和函数,提供一种抽象的数据类型。对象是类的实例,它具有类定义的属性和行为。
在 C++ 中,构造函数和析构函数是类的特殊成员函数,它们分别用于初始化对象和清理对象。本文将详细介绍 C++ 构造函数和析构函数的概念、语法和使用方法。
一、构造函数
1. 概念
构造函数是一种特殊的成员函数,它在对象创建时自动调用,用于初始化对象的数据成员。构造函数的名称必须与类名相同,没有返回值,也不允许有 return 语句。
2. 语法
构造函数有以下几种语法:
(1)默认构造函数
如果一个类没有定义任何构造函数,编译器会自动生成一个默认构造函数,它没有任何参数,也没有任何语句。默认构造函数的作用是初始化对象的数据成员。
例如:
```
class Person {
public: - 2 - string name;
int age;
};
```
上面的代码中,Person 类没有定义任何构造函数,因此编译器会自动生成一个默认构造函数。
(2)带参数构造函数
如果一个类需要根据不同的参数创建对象,就需要定义带参数的构造函数。带参数的构造函数可以有多个,它们的参数列表可以不同,但是名称必须相同。
例如:
```
class Person {
public:
Person(string name, int age) {
this->name = name;
this->age = age;
}
string name;
int age;
};
``` - 3 - 上面的代码中,Person 类定义了一个带参数的构造函数,用于根据姓名和年龄创建对象。
(3)拷贝构造函数
拷贝构造函数是一种特殊的构造函数,用于用一个对象初始化另一个对象。拷贝构造函数的参数必须是一个同类对象的引用。
例如:
```
class Person {
public:
Person(const Person& p) {
this->name = ;
this->age = p.age;
}
string name;
int age;
};
```
上面的代码中,Person 类定义了一个拷贝构造函数,用于用一个 Person 对象初始化另一个 Person 对象。
3. 使用
在创建对象时,构造函数会自动调用,用于初始化对象的数据成员。例如: - 4 - ```
Person p('张三', 18);
```
上面的代码中,创建一个 Person 对象 p,并调用带参数的构造函数,将姓名设置为“张三”,年龄设置为 18。
二、析构函数
1. 概念
析构函数是一种特殊的成员函数,它在对象销毁时自动调用,用于清理对象的资源。析构函数的名称必须与类名相同,前面加上 ~ 符号,没有参数和返回值。
2. 语法
析构函数的语法如下:
```
~ClassName() {
// 清理资源的代码
}
```
例如:
```
class Person {
public:
~Person() { - 5 - // 清理资源的代码
}
string name;
int age;
};
```
上面的代码中,Person 类定义了一个析构函数,用于清理对象的资源。
3. 使用
在对象销毁时,析构函数会自动调用,用于清理对象的资源。例如:
```
Person* p = new Person('张三', 18);
delete p;
```
上面的代码中,创建一个 Person 对象 p,并在程序结束前使用
delete 关键字销毁对象,此时析构函数会自动调用,用于清理对象的资源。
三、总结
C++ 构造函数和析构函数是类的特殊成员函数,用于初始化对象和清理对象的资源。构造函数在对象创建时自动调用,用于初始化对象的数据成员;析构函数在对象销毁时自动调用,用于清理对象的资 - 6 - 源。构造函数可以有多个,它们的参数列表可以不同,但是名称必须相同;析构函数只有一个,名称必须与类名相同,前面加上 ~ 符号。在使用构造函数和析构函数时,需要注意参数的传递和资源的清理,避免内存泄漏和资源浪费。