C++类对象的初始化
类对象的初始化
序:
程序在使⽤时是常常需要对变量进⾏初始化赋值。与c语⾔不同,在⾯向对象的编程中,使⽤构造函数对数据成员进⾏初始化,有多种⽅式。
录:
c++string类型⼀、⽆参数的构造函数
⼆、带参数的构造函数
三、使⽤构造函数的参数初始化表
四、带默认参数的构造函数
对各种⽅式的描述均以举例⼦的⽅式来解释:
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函数对成员修改,直接输出初始化中的初始值。return0;
}
⼆、带参数的构造函数
区别于第⼀种类的定义,加⼊构造函数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();
return0;
}
带参数较⽆参数的对类、类外函数、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();
return0;
}
定义对象时直接进⾏初始化
学习c++时的对类数据成员的理解,若有不⾜或者错误,望各位⼤佬指出来,⼀起学习。谢谢!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。