c++从入门到精通——构造函数调用规则

构造函数调用规则

  • 默认情况下,c++编译器至少为我们写的类增加3个函数
    1.默认构造函数(无参,函数体为空)
    2.默认析构函数(无参,函数体为空)
    3.默认拷贝构造函数,对类中非静态成员属性简单值拷贝
  • 如果用户定义拷贝构造函数,c++不会再提供任何默认构造函数
  • 如果用户定义了普通构造(非拷贝),c++不在提供默认无参构造,但是会提供默认拷贝构造

例子1

class MyClass2
{
public:

	MyClass2(const MyClass& m)
	{
	}
	int m_A;

};

void test02()
{
	MyClass2 c1;
}

用户定义拷贝构造函数,c++不会再提供任何默认构造函数
运行报错
这时要手动添加,默认构造函数。

	MyClass2()
	{
		cout << "默认构造函数" << endl;
	}

例子2

#include <iostream>
using namespace std;

class MyClass
{
public:
	MyClass(int a)
	{
		cout << "有参构造函数" << endl;
	}

	int m_A;	
};

void test01()
{
	MyClass c1(1);
	c1.m_A = 10;
	MyClass c2(c1);
	cout << c2.m_A << endl;
}

int main()
{
	test01();
    return 0;
}

运行

有参构造函数
10

用户定义了普通构造(非拷贝),c++不在提供默认无参构造,但是会提供默认拷贝构造

	//MyClass(const MyClass& m)
	//{
	//}

资料

构造函数调用规则

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章