构造函数用于类对象的初始化,没有返回值也不用写void,函数名与类名相同。构造函数可以有形参也可以无参,构造函数要写在类里边。语法:public: 类名(){ *** }。构造函数在创建对象(实例化)时会被调用且只有一次。因此构造函数经常用于给实例化对象赋初值。下面介绍几种构造函数赋初值的形式:
一、无参构造函数():属性1(值1),属性2(值2){ 代码可写可不写 }; 实例化时初始值会自动赋到对象中。代码举例:
#include <iostream>
#include <string>
using namespace std;
class myClass
{
public:
int val;
string str;
myClass():val(10),str("ABC")
{ }
};
int main()
{
myClass mc;
cout << mc.val << " " << mc.str << endl;
system("pause");
return 0;
}
实例化:myClass mc;
运行结果:
10 ABC
请按任意键继续. . .
二、有参构造函数 (类型 变量1,类型 变量2): 属性1(变量1),属性2(变量2) {代码可写可不写};实例化时使用括号法赋值。代码举例:(部分代码)
class myClass
{
public:
int val;
string str;
myClass(int val1,string str1):val(val1),str(str1)
{ }
};
实例化 myClass mc(20,"BCD");
运行结果:
20 BCD
请按任意键继续. . .
三、有参构造函数 (类型 变量1,类型 变量2){ 赋值代码必须写 };实例化时使用括号法赋值。代码举例:(部分代码)
class myClass
{
public:
int val;
string str;
myClass(int val1,string str1)
{
val = val1;
str = str1;
}
};
实例化: myClass mc(30,"CDE");
运行结果:
30 CDE
请按任意键继续. . .
四、有参构造函数 (类型 变量1=默认值1,类型 变量2=默认值2){赋值代码};实例化时使用括号法赋值,如不用括号法则使用默认值。代码举例:(部分代码)
class myClass
{
public:
int val;
string str;
myClass(int val1=40,string str1="DEF")
{
val = val1;
str = str1;
}
};
实例化 myClass mc;
运行结果:
40 DEF
请按任意键继续. .
总结以上几种形式,感觉最后一种使用起来最为方便。