利用构造函数对类对象进行初始化
1、构造函数初始化数据成员
#include <iostream>
using namespace std;
class T
{
public:
T() //声明并定义构造函数,给数据成员赋值
{
lang = 2;
wide = 2;
high = 2;
}
int setvalue();
private:
int lang;
int wide;
int high;
};
int T::setvalue()
{
return (lang * wide * high);
}
int main()
{
T m_ob1;
cout << m_ob1.setvalue() << endl;
return 0;
}
2、带参的构造函数
#include <iostream>
using namespace std;
class T
{
public:
T(int l, int w, int h); //声明带有3个参数的构造函数
int setvalue();
private:
int lang;
int wide;
int high;
};
T(int l, int w, int h)
{
lang = l;
wide = w;
high = h;
}
int T::setvalue()
{
return (lang * wide * high);
}
int main()
{
T m_ob1(2,2,2); //创建对象 m_ob1,并给定3个参数
cout << m_ob1.setvalue() << endl;
T m_ob2(3,3,3); //创建对象 m_ob2,并给定3个参数
cout << m_ob2.setvalue() << endl;
return 0;
}
3、使用构造函数初始化成员列表
#include <iostream>
using namespace std;
class T
{
public:
T(int l, int w, int h):lang(l), wide(w), high(h){} //定义带有参数初始化表的构造函数
int setvalue();
private:
int lang;
int wide;
int high;
};
int T::setvalue()
{
return (lang * wide * high);
}
int main()
{
T m_ob1(2,2,2);
cout << m_ob1.setvalue() << endl;
return 0;
}
4、构造函数的重载
#include <iostream>
using namespace std;
class T
{
public:
T(); //声明一个不带参数的构造函数
T(int l, int w, int h):lang(l), wide(w), high(h){} //声明一个带有3个参数的构造函数
int setvalue();
private:
int lang;
int wide;
int high;
};
T::T()
{
lang = 2;
wide = 2;
high = 2;
}
int T::setvalue()
{
return (lang * wide * high);
}
int main()
{
T m_ob1; //创建不带参数的对象,系统找到与之对应的无参构造函数
cout << m_ob1.setvalue() << endl;
T m_ob2(3,3,3); //创建带有3个参数的对象,系统找到与之对应的带有3个参数的构造函数
cout << m_ob2.setvalue() << endl;
return 0;
}
5、使用默认参数的构造函数
#include <iostream>
using namespace std;
class T
{
public:
T(int l = 2, int w = 2, int h =2); //声明构造函数的时指定默认参数
int setvalue();
private:
int lang;
int wide;
int high;
};
T::T(int l, int w, int h) //定义构造函数时可以不指定默认参数
{
lang = l;
wide = w;
high = h;
}
int T::setvalue()
{
return (lang * wide * high);
}
int main()
{
T m_ob1;
cout << m_ob1.setvalue() << endl;
T m_ob2(3,3);
cout << m_ob2.setvalue() << endl;
T m_ob3(4,4,4);
cout << m_ob3.setvalue() << endl;
return 0;
}