c++回顾(五)类:构造函数和析构函数

在大多数c++程序中,类是至关重要的。

基础知识一:访问标号

public(公开访问,包括类内、类外、子类等)、private(只能内部访问)、pretected(类内、子类内,不能再外部访问)。

注意:如果类是用struct关键字定义,则在第一个访问号之前的成员是共有的;如果是class关键字定义的,则在第一个访问号之前的成员是私有的。

基础知识二:成员函数

除了static成员函数外,每个成员函数都有一个隐藏this表示对象地址,形参this初始化为调用函数对象的地址。

如下:定义一个Point类,并调用output成员函数输出类中的x和y

#include<iostream>
using namespace std;

struct Point
{
	int x;
	int y;
	void output()//成员函数
	{
		cout << "x="<<x << endl <<"y="<< y << endl;
	}
};
int main()
{
	Point p;//Point是类,P是对象
	p.x = 5;
	p.y = 2;
	p.output();
	system("pause");
    return 0;
}

输出结果如下:

基础知识三、构造函数

构造函数是特殊的成员函数,与其他成员函数不同,构造函数和类同名,而且没有返回值,构造函数可以重载,即一个类有多个构造函数,但必须与其他构造有与其他构造函数不同数目或类型的形参。在声明对象时会自动调用构造函数。

构造函数的作用:1、初始化;2、最重要的作用是创建对象本身,如果没有构造函数,就不能创建任何对象(注意:默认是有构造函数的,只负责创建对象,不做任何初始化,如果定义了构造函数,默认构造函数就不用了)

基础知识四、析构函数

构造函数分配一个缓冲区或者打开一个资源,而析构函数作为构造函数的补充,可以释放对象构造时或在对象的生命周期所获取的资源,不管类是否定义了自己的构造函数,编译器都自动执行类中的非static数据成员的析构函数。

需要注意的是,构造函数不能被定义成虚函数,但是析构函数可以被定义成虚函数。

析构函数的作用:

1、当对象生命周期结束时,所占用的内存空间就要被回收,这个工作有析构函数完成

2、析构函数是反向的构造函数,不允许有返回值,且不能带参数,并且一个类中只能有一个析构函数。

析构函数的执行实际:

1,当对象被声明为全局变量,则当整个程序退出时,其析构函数才会被调用。 
2,当对象被声明为自动存储类型(局部变量),当其生命周期结束,即其作用域执行完毕时,其析构函数会被调用。 
3,当对象被声明为指针变量(使用new创建对象),当执行到delete方法时,其析构函数会被调用。 
4,临时对象,这种对象在临时对象完成任务时自动调用其析构函数。下面我们会专门介绍这种情况。

关于构造函数和析构函数的例子如下

#include<iostream>
using namespace std;

struct Point
{
	int x;
	int y;
	Point()//构造函数,注意没有任何返回值
	{
		x = 0;
		y = 0;
	}
	~Point()//析构函数
	{
cout<<"再见"<<endl;
	}
	void output()//成员函数
	{
		cout << "x="<<x << endl <<"y="<< y << endl;
	}
};
int main()
{
	Point p;

	p.output();
	system("pause");
    return 0;
}

代码输出如下,可以看到,有个默认初始化值0,在我结束周期的瞬间,会出现再见儿子

参考文献:

C++:类的构造函数和析构函数

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值