c++构造函数

默认构造函数

#include <iostream>

using namespace std;

class Person
{

};


//构造函数作用:为对象分配空间,对成员进行初始化
//类默认会有个一个构造函数
//构造函数可以有多个,可以通过重载的方式
//析构函数只能有一个

int main(int argc, char *argv[])
{
	Person p1; //默认会有一个构造函数,调用默认构造函数

	//编译是可以通过的,可以运行
	cin.get();
	return 0;
}

默认构造函数 执行效果

调用默认的构造函数

在栈和堆调用不同

#include <iostream>

using namespace std;

class People
{
public:
	People()
	{
		cout << "构造函数被调用" << endl;
	}
	~People()
	{
		cout << "析构函数被调用" << endl;
	}
};

//函数分配在栈上,调用结束,进行释放
void stack_call()
{
	People people;
}

//在函数中,通过new初始化,是分配在堆上,调用结束并不会去调用析构函数
void heap_call()
{
	People *people = new People;
}

int main(int argc, char *argv[])
{
	cout << "在栈上调用,构造和析构都会调用" << endl;
	stack_call();

	cout << "=========================" << endl;
	cout << "在堆上调用,构造会被调用,析构不会被调用" << endl;
	heap_call();

	cout<<"========================="<<endl;
	cin.get();
	return 0;
}

在栈和堆调用 效果

在堆上分配,函数结束不会自动调用析构函数,释放空间
秋风 2018-03-18