C++ 类对象的初始化

本文详细介绍了C++中四种初始化类对象的方式:无参数构造函数、带参数构造函数、带默认参数构造函数和使用参数初始化表。通过实例演示了如何在类定义、类外函数和main函数中应用这些技术,帮助理解数据成员初始化的灵活性。
摘要由CSDN通过智能技术生成

类对象的初始化

序:
程序在使用时是常常需要对变量进行初始化赋值。与c语言不同,在面向对象的编程中,使用构造函数数据成员进行初始化,有多种方式。

录:
一、无参数的构造函数

二、带参数的构造函数

三、使用构造函数的参数初始化表

四、带默认参数的构造函数

对各种方式的描述均以举例子的方式来解释:

eg: 定义一个描述学生通讯录的类,数据成员包括:姓名、学校、电话号码.成员函数包括构造函数.设置各个数据成员的值和输出各个数据成员的值

对于类的定义(统一):

class Cstudent
{
public:
	void set_data();  //建立学生数据
	void show_data();  //输出学生数据
private:
	string name;
	string school;
	int tele;
};

一、无参数的构造函数

#include <iostream>
#include <string>
using namespace std;
class Cstudent
{
	public:
		Cstudent()    //构造函数名要与类名相同
		{
			name = "zhangsan";
			school = "yizhong";
			tele = 12345;
		}					//在构造函数中直接对成员初始化
		void set_data();
		void show_data();
	private:
		string name;
		string school;
		int tele;
};

void Cstudent::set_data()
{
	cin >> name;
	cin >> school;
	cin >> tele;
	return;
}

void Cstudent::show_data()
{
	cout <<""<< name <<" "<< school<< " " << tele << endl;
	return;
}

int main()
{
	Cstudent C1;
	C1.set_data();
	C1.show_data();
	//对学生数据进行修改,输出为set_data函数输入的值
	Cstudent C2;
	C2.show_data();   
	//C2对象没有调用set_data函数对成员修改,直接输出初始化中的初始值。
	return 0;
}

二、带参数的构造函数

区别于第一种类的定义,加入构造函数Cstudent

class Cstudent
{
public:
	Cstudent(string, string, int);   //类名 (类型1,类型2,类型3)
								 	//类型与初始化数据类型一致
	void set_data();
	void show_data();
private:
	string name;
	string school;
	int tele;
};

在类外需要对其定义

Cstudent::Cstudent(string string1, string string2, int t)
{
	name = string1;
	school = string2;
	tele = t;
}

在主函数对象定义时为
类名 对象名(实参1,实参2,实参3);

int main()
{
	Cstudent C1("wanger","yizhong",2341);  //对其进行初始化数据
	C1.show_data();
	Cstudent C2("Lisi", "yizhong", 12311);
	C2.show_data();
	return 0;
}

带参数较无参数的对类、类外函数、main函数添加修改
即毕

三、带默认参数的构造函数

类的定义:

class Cstudent
{
public:
	Cstudent(string a = "zhangsan", 
			string b = "yihzong", 
			int c = 12414);
	void set_data();
	void show_data();
private:
	string name;
	string school;
	int tele;
};

类外定义:

Cstudent::Cstudent(string a, string b, int c)
{
	name = a;
	school = b;
	tele = c;
}

main函数中常规定义对象:

Cstudent s1;

与带参数比较:
在构造函数中直接对参数进行初始化而后在类外进行参数与数据成员的链接。 两者差别不大,着重理解`参数数据成员的初始化

四、带参数初始化表

类中定义

构造函数结构

类名(类型1 形参1…):成员1(类型1…){}

class Cstudent
{
public:
	Cstudent(string string1,string string2,int t):name(string1), school(string2), tele(t){}
	void set_data();
	void show_data();
private:
	string name;
	string school;
	int tele;
};

注意: 若形参为数组,组需要在函数体{}中使用strcpy函数对其赋值
eg;

Cstudent(string dtring1,char s[10]):name(string1)  //构造函数
{strcpy(school,s)}  			//函数体

main函数中

int main()
{
	Cstudent C1("wanger", "yizhong", 2341);
	C1.show_data();
	Cstudent C2("Lisi", "yizhong", 12311);
	C2.show_data();
	return 0;
}

定义对象时直接进行初始化

学习c++时的对类数据成员的理解,若有不足或者错误,望各位大佬指出来,一起学习。谢谢!

C++中,可以通过对象数组初始化来创建一个由多个对象组成的数组。对象数组初始化的方式有多种,下面是其中两种常用的方式: 1. 使用默认构造函数初始化对象数组 如果中有默认构造函数,那么可以使用以下方式初始化对象数组: ```cpp class MyClass { public: MyClass() { // 默认构造函数 } }; int main() { MyClass arr[5]; // 创建由5个MyClass对象组成的数组 return 0; } ``` 在上面的例子中,`MyClass arr[5]` 创建了一个由5个MyClass对象组成的数组,这些对象都是使用默认构造函数初始化的。 2. 使用带参数的构造函数初始化对象数组 如果中有带参数的构造函数,那么可以使用以下方式初始化对象数组: ```cpp class MyClass { public: MyClass(int x) { // 带参数的构造函数 } }; int main() { MyClass arr[5] = {MyClass(1), MyClass(2), MyClass(3), MyClass(4), MyClass(5)}; // 创建由5个MyClass对象组成的数组,并使用带参数的构造函数初始化 return 0; } ``` 在上面的例子中,`MyClass arr[5]` 创建了一个由5个MyClass对象组成的数组,并使用带参数的构造函数初始化。也可以使用的默认构造函数来初始化数组的一部分元素,例如: ```cpp class MyClass { public: MyClass() { // 默认构造函数 } MyClass(int x) { // 带参数的构造函数 } }; int main() { MyClass arr[5] = {MyClass(1), MyClass(), MyClass(3)}; // 创建由5个MyClass对象组成的数组,并使用带参数的构造函数和默认构造函数初始化 return 0; } ``` 在上面的例子中,`MyClass arr[5]` 创建了一个由5个MyClass对象组成的数组,并使用带参数的构造函数和默认构造函数初始化。其中,第一个和第三个元素使用带参数的构造函数初始化,第二个元素使用默认构造函数初始化
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Hairy377

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值