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 - 源。构造函数可以有多个,它们的参数列表可以不同,但是名称必须相同;析构函数只有一个,名称必须与类名相同,前面加上 ~ 符号。在使用构造函数和析构函数时,需要注意参数的传递和资源的清理,避免内存泄漏和资源浪费。