c构造函数和析构函数
C++是一门面向对象的编程语言,它提供了构造函数和析构函数这两个重要的特性来管理对象的生命周期。本文将从C++中构造函数和析构函数的定义、作用、调用时机以及常见的使用场景等方面进行讲解。
一、构造函数
1.1 定义
构造函数是一种特殊的成员函数,用于在创建对象时进行初始化。它的函数名与类名相同,没有返回值类型,可以带有参数,也可以不带参数。
1.2 作用
构造函数的主要作用是在对象创建时完成对成员变量的初始化。当对象被创建时,编译器会自动调用构造函数来完成初始化工作,保证对象的数据成员都处于合法的状态。
1.3 调用时机
构造函数的调用时机分为两种情况:
(1)在对象创建时自动调用。例如:
```
class Person{
public:
Person(){
cout << '构造函数被调用' << endl;
}
};
int main(){
Person p;
return 0;
}
```
输出结果为:构造函数被调用
(2)在使用new运算符动态分配内存时,需要手动调用构造函数。例如:
```
Person *p = new Person();
```
1.4 常见的使用场景
(1)初始化对象的数据成员
```
class Person{
public:
string name;
int age;
Person(string n, int a){
name = n;
age = a;
}
};
```
(2)分配动态内存
```
class String{
public:
char *str;
String(const char *s){
str = new char[strlen(s) + 1];
strcpy(str, s);
}
~String(){
delete[] str;
}
};
```
二、析构函数
2.1 定义
析构函数是一种特殊的成员函数,用于在对象销毁时进行清理工作。它的函数名与类名相同,前面加上一个波浪号(~),没有返回值类型,不带参数。
2.2 作用
析构函数的主要作用是在对象销毁时完成对成员变量的清理工作。当对象被销毁时,编译器会自动调用析构函数来完成清理工作,释放对象所占用的资源,避免内存泄漏等问题。
2.3 调用时机
析构函数的调用时机分为两种情况:
(1)在对象销毁时自动调用。例如:
```
class Person{
public:
~Person(){
cout << '析构函数被调用' << endl;
}
};
int main(){
Person p;
return 0;
}
```
输出结果为:析构函数被调用
(2)在使用delete运算符释放动态内存时,需要手动调用析构函数。例如:
```
Person *p = new Person();
delete p;
```
2.4 常见的使用场景
(1)释放动态内存
```
class String{
public:
char *str;
析构函数的定义 String(const char *s){
str = new char[strlen(s) + 1];
strcpy(str, s);
}
~String(){
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论