构造函数与析构函数的示例

class Student
{
public:
	Student();
	Student(int);

private:
	double score, count;
};

     构造函数是一个很神奇的函数---与类名相同的成员函数并且不能有返回值,一个类可以拥有多个构造函数(换句话说可以对构造函数进行重载),每个构造函数拥有不同数量的参数(可以无参数);

多数情况下,编译器为类生成一个公有的默认构造函数:

                          1.类显式地声明了任何构造函数

                          2.类声明了一个非公有的默认构造函数

class TPoint
{
public:
	TPoint() {}
	TPoint(int x)
	{
		X = x;
		Y = x;
	}
	TPoint(int x, int y)
	{
		X = x;
		Y = y;
		cout << "Constructor is called\n";
	}

	TPoint(TPoint &p);
	~TPoint()
	{
		cout << "Destructor is called\n";
	}
	int getx()
	{
		return X;
	}
	int gety()
	{
		return Y;
	}
private:
	int X, Y;
};
TPoint::TPoint(TPoint &p)
{
	X = p.X;
	Y = p.Y;
	cout << "Copy-initialization Constructor is called\n";
}
int main()
{
	TPoint P4, P5(2);
	TPoint p1(4, 9);
	TPoint p2(p1);
	TPoint p3 = p2;
	cout << "p3=(" << p3.getx() << "," << p3.gety() << ")\n";
	return 0;
}

这是一个简单的例子,给我们演示了构造函数与虚构函数的使用方法。

析构函数---创建类的对象或当对象被摧毁时,会自动调用某个合适的析构函数;

对象摧毁出现在下列两种情况中:

1.以某个类作为数据类型的变量超出其作用范围

2.用delete操作符删除动态分配的对象

注意:析构函数不带参数,所以不能被重载!强调:每个类只能拥用一个析构函数!


####使用new操作符动态分配一个对象,并将其地址保存在类型为C*的指针ptr中,由于使用了操作符new,调用默认构造函数以初始化ptr所指对象;

####使用delete操作符删除ptr所指对象,此时自动调用析构函数!

猜你喜欢

转载自blog.csdn.net/qq_qwer/article/details/68070054