C++——构造函数(定义以及调用构造函数的过程)

目录

一、构造函数 

 二、调用构造函数(重点)

三、组合

四、类成员初始化的困惑——冒号语法——成员初始化列表

一、构造函数 

1.定义对象的时候,自动调用当前类的构造函数
   如果程序员没有定义构造函数,则类会提供一个默认的构造函数,给类中的数据成员分配空间。(分配的是栈上的空间)
2.构造的特殊的成员函数,函数名和类名相同,无返回类型,可以带参数(说明构造函数可以重载)
<<能带参数说明可以构成重载<<

#include
using namespace std;

class Table
{
public:
	void Set();
	void Print();
private:
	int m_length;
	int m_width;
	int m_height;

};
void Table::Set()
{
	m_length = 120;
	m_width = 40;
	m_height = 80;
}
void Table::Print() {
	cout << m_length << " " << m_width << " " << m_height << endl;
}

//Person p;
int main()
{
	Table t;
	//t.Set();
	t.Print();
}

 二、调用构造函数(重点)

遇到对象,要自动调用当前类的构造函数,调用构造函数的步骤:
(1)传参
(2)根据数据成员在类中的声明顺序,用冒号语法后面的值进行初始化
(3)执行构造函数函数体

初始化:在声明的时候直接给值;
赋初值:赋一个值。

class Table
{
public:
	//①默认构造函数无参
	/*Table()
	{

	}
	*/
    //Table(int l, int w, int h)//②不存在默认构造函数
	Table(int l = 120,int w=40,int h=80)
	
    {
		m_length = l;
		m_width = w;
		m_height = h;
		cout << "Table" << endl;
	}
	void Print()
	{
		cout << m_length << " " << m_width << " " << m_height << endl;
	}
private:
	int m_length;
	int m_width;
	int m_height;

};

int main()
{
	Table t;//定义对象——自动调用Table的构造函数
	t.Print();
	Table t1(60);
	t1.Print();
	Table t2(180,50);
	t2.Print();//调匹配的构造函数
	Table tt[5];//定义一个对象数组 tt[0]~tt[4]
	//cout << "main" << endl;
	Table* p=&t;//定义一个指针变量,p不是对象,只是可以指向Table类型的变量,没有定义Table的对象。但不会调用构造函数
	p->Print();//
}

三、组合

强拥有,一个类的对象作为另外一个类的数据成员——整体和部分的关系

例子:CPU类、鼠标类、键盘类的对象作为电脑类的数据成员。

class CPU
{
public:
	CPU()
	{
		cout << "CPU" << endl;
	}
};

class Mouse
{
public:
	Mouse()
	{
		cout << "Mouse" << endl;
	}
};

class KeyBoard
{
public:
	KeyBoard()
	{
		cout << "KeyBoard" << endl;
	}
};

class Computer
{
public:
	Computer()
	{
		cout << "Computer" << endl;
	}
private:
	CPU cpu;
	Mouse ms;
	KeyBoard kb;

};

int main()
{
	Computer c;
}

四、类成员初始化的困惑

冒号语法(也称成员初始化列表)

你可能感兴趣的:(C++,c++,开发语言,visual,studio)