0
点赞
收藏
分享

微信扫一扫

构造和析构

晴儿成长记 2022-04-29 阅读 85

对象的初始化和清理也是两个非常重要的安全问题。

(1)一个对象或变量没有初始化状态,对其使用后果是未知的。

(2)同样的使用完一个对象或变量,没有及时清理,也会照成一定的安全问题。

1. c++利用构造函数析构函数解决上述问题,这两个函数都会被编译器自动调用,完成对象初始化和清理工作。

2.   对象的初始化和清理工作是编译器强制要我们去做的事情,因此如果我们不提供构造和析构函数,编译器会自动提供,编译器提供的构造和析构函数是空实现。

构造函数:主要作用在创建对象时为对象的成员属性赋值,构造函数由编译器自动调用,无需手动调用。

构造函数替换set,例如:

#include<iostream>
using namespace std;
class A
{
public:
void setx(int a)
{
x=a;
}
private:
int x;
};
int main()
{

return 0;
}

替换为:

#include<iostream>
using namespace std;
class A
{
public:
A(int a)
{
x=a;
}
private:
int x;
};
int main()
{

return 0;
}

特点:

1)构造函数的名字与类名相同。

2)构造函数无返回值。

3)构造函数可以有多个参数(根据成员变量的数量)。

4)构造函数由系统自动调用,在创建对象的同时系统会自动调用构造函数。

注意:c++类中不是必须有默认构造函数,如果你自己实现了构造函数,就没有,如果没有实现构造函数,系统就默认加上一个默认构造函数。

构造函数调用规则如下:

(1)如果用户定义有参构造函数,c++不再提供默认无参构造函数,但是会提供默认复制构造函数。

(2)如果用户定义了复制构造函数,c++不会提供其它(默认无参构造函数、有参构造函数)构造函数了。

析构函数:主要作用在于对象销毁前系统自动调用,执行一些清理工作。

析构函数:回收对象。

特点:

1)析构函数的名字是类名前加~。

2)析构函数没有返回值。

3)析构函数没有参数,只能定义一个

4)在对象被回收时由系统自动调用。

例如:

#include<iostream>
using namespace std;
class A
{
public:
~A()
{

}
private:
int x;
};
int main()
{

return 0;
}
举报

相关推荐

0 条评论