构造函数

构造函数

//构造函数,它是一种特殊的函数
//主要用来在创建对象时初始化对象,即为对象的成员变量赋初始值
//也可以将对象在创建之出需要执行的逻辑写在构造函数中

#include<iostream>
#include<string>
using namespace std;

//在创建对象的时候,用来初始化类中的数据成员
//在构造中,写上定义这个对象要做的事情

/*
*1、构造函数名字和类名相同
*2、构造函数没有返回值
*3、构造函数可以函数重载
*4、构造函数的调用,在创建一个新的对象的时候自动调用
*5、如果在类当中没有显示的给出构造函数,系统会自动给出一个缺省(隐式)的构造函数(什么都不干)
*6、如果类中提供了带参构造,那么系统就不会提供这个默认构造
*7、如果类中只有带参构造,那么就不能调用默认构造的方式初始化对象,想要用这种方式初始化
	对象,那么自己提供默认构造
*/
class CStudent
{
public:
	int id;
	string name;
	//构造函数的实现 构造函数名字和类名相同
	CStudent()//无参(默认)构造
	{
		cout << "无参构造" << endl;
		id = 1;
		name = "无参构造";
	}
	CStudent(int x, string s)//有参(带参)构造
	{
		cout << "带参构造" << endl;
		id = x;
		name = s;
	}
	CStudent(int x)//有参(带参)构造
	{
		id = x;
		name = "固定参数";
	}
};
void fun(CStudent& stu)
{
	cout << stu.id << endl; 
}


void fun1(CStudent s)//拷贝构造
{
	cout << s.id << endl << s.name << endl;
}
int main()
{
	CStudent stu;
	cout << stu.id << endl<<stu.name<<endl;
	fun1(stu);


	//CStudent stu;                             //无参构造
	//无构造函数事,多个变量需要赋值的时候不方便
	/*stu.id = 123;
	stu.name = "小明";*/
	//构造函数的调用,在创建一个新的对象的时候自动调用
	//cout << stu.id << " " << stu.name << endl;


	//CStudent stu(333,"带参构造");				//带参构造 方式一
	//CStudent stu = { 333, "带参构造" };         //带参构造 方式二
	//cout << stu.id << " " << stu.name << endl;


	//CStudent stu(333);			
	//CStudent stu = { 333};         //带参构造 方式二
	//cout << stu.id << " " << stu.name << endl;

	//CStudent* stu = new CStudent;//相当于无参构造
	/*cout << stu->id << endl << stu->name << endl;
	delete stu;
	stu = NULL;*/

	//CStudent* stu = new CStudent(123, "带参构造");//相当于带参构造
	//cout << stu->id << endl << stu->name << endl;
	//delete stu;
	//stu = NULL;

	//CStudent* stu = new CStudent[10];//只能调用默认构造
	//delete[] stu;
	//stu = NULL;



	return 0;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彭就是我的姓i

你的鼓励是我创作的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值