该类对象被创建时,编译系统对象分配内存空间,并自动调用该构造函数,由构造函数完成成员的初始化工作,故:构造函数的作用:初始化对象的数据成员。有对象才有构造函数。
构造函数的分类:
一. 默认构造函数
即未自定义构造函数,是空的,无作用
cstu()
{
}
二.无参数的构造函数
cstu()
{
}
三.带参数的构造函数
#include <iostream>
using namespace std;
class cstu
{
public:
int age;
float score;
//无参数的构造函数
/*cstu()//无参数的构造函数
{
age= 18;
score= 60.5f;
}*/
//带参数的构造函数
cstu(int a,float b)//也可以在此赋值,如cstu(int a,float b=2.8f),但如果传递了参数,该值会被覆盖
{
age = a;
score = b;
}
};
int main()
{
cstu st;//无参数
cstu st1(18,62.5f);//带参数的普通栈区传递方式
cstu* st2 = new cstu(18, 62.5f);//也可进行指针传递
cout << st.a << endl;
cout << st1.age<<" "<<st1.score << endl;
cout << st2.age << " " << st2.score << endl;
return 0;
}
四.多个构造函数的函数重载
只要宏观声明了构造函数,默认的构造函数就没有了,相当于被覆盖
函数重载与普通函数一样,只要参数列表不同,函数名字可以相同,依据形参的形式调用函数。
五.成员函数的定义
1.类内定义
2.可在类内声明函数,类外定义函数
但在类外函数名前必须加上类名作用域,如:cstu::cstu(int a, float b)//普通函数同样可以
适用于类外定义函数,用于多文件