C++的构造函数和析构函数(一)构造函数及其调用

在接下来的几篇博客中,我将详细的介绍 C++ 的构造函数和析构函数

构造函数

  • 什么叫叫构造函数:

    函数名与类同名,没有返回值,在创建对象时自动调用,这种特殊的函数就是构造函数,构造函数包括 无参构造函数有参构造函数

  • 构造函数的特点
    1、没有返回值(void都不能写)
    2、可以有参数、可以重载、可以有多个构造函数
    3、一旦自定义了构造函数,必须使用其中一个自定义的构造函数来初始化对象
    4、注意:通过malloc分配的对象不会调用构造函数(这也是new和malloc的区别)

  • 为什么要使用构造函数
    在前面的封装中讲过,我们可以通过setter方法为我们的成员变量赋值,但多多少少会觉得这样很麻烦。当有了构造函数,我们就可以在创建对象的同时也为我们的成员变量赋值。

  • 构造函数的重载和调用(代码)

class Person {

private:
	int m_age;
	int m_height;

public:

	Person() {
		cout << "无参构造函数:Person()" << endl;
		cout << "age=" << m_age << ",height=" << m_height << endl;
	}

	Person(int age) {
		m_age = age;
		cout << "有参构造函数:Person(int age)" << endl;
		cout << "age=" << m_age << ",height=" << m_height << endl;
	}

	Person(int age,int height) {
		m_age = age;
		m_height = height;
		cout << "有参构造函数:Person(int age,int height)" << endl;
		cout << "age=" << m_age << ",height=" << m_height << endl;
	}
};

//全局区
Person g_p1;		  //调用无参构造函数:Person()
Person g_p2();		  //这只是一个函数声名,无参,返回值类型为Person
Person g_p3(20);	  //调用有参构造函数:Person(int age)
Person g_p4(20,180);  //调用有参构造函数:Person(int age,intheight)

int main() {

	//栈空间 
	Person z_p1;          //调用无参构造函数:Person()
	Person z_p2();        //这只是一个函数声名,无参,返回值类型为Person,
	Person z_p3(20);      //调用有参构造函数:Person(int age)
	Person z_p4(20, 180); //调用有参构造函数:Person(int age,intheight)

	//堆空间
	Person *d_p4 = new Person;		    //调用无参构造函数:Person()
	Person *d_p5 = new Person();		//调用无参构造函数:Person()
	Person *d_p6 = new Person(40);	    //调用有参构造函数:Person(int age)
	Person *d_p7 = new Ped_rson(50,190);//调用有参构造函数:Person(int age,intheight)

	getchar();
	return 0;
}

运行结果
在这里插入图片描述
在上面的代码中,给大家挖了一坑,在代码中都标注说明了,可以好好看看!!!
(编译环境:Visual Studio)

但是为什么运行的结果中有很多乱七八糟的数字呢?其实这就涉及到默认情况下成员变量和对象的初始化问题,这个问题在下篇博客中会详细讲解。

猜你喜欢

转载自blog.csdn.net/qq_47329614/article/details/106909292
今日推荐