C++学习体会--构造函数初始化数据成员值的两条路
程序员文章站
2022-06-26 10:27:28
C++学习体会--构造函数初始化数据成员值的两条路 在编写一个应用时,我们会希望他们的变量,可以是指定的初始值。另外,在我需要的时候,当我定义相同的类但是不同的对象时,我可以设置其他的初始值。 结果: 分析: 当类实体化的时候,默认进入与其相同名字的构造函数,当实体化对象时,如果存在实参,则将初始值 ......
C++学习体会--构造函数初始化数据成员值的两条路
在编写一个应用时,我们会希望他们的变量,可以是指定的初始值。另外,在我需要的时候,当我定义相同的类但是不同的对象时,我可以设置其他的初始值。
#include <iostream> using namespace std; class CBox { public: double m_Length{ 1.0 }; double m_Width{ 1.0 }; double m_Height{ 1.0 }; CBox(double lv, double wv, double hv)//初始化路1:有实参赋予 { cout << "Constrcurtor called." << endl; m_Height = hv; m_Length = lv; m_Width = wv; } CBox() = default; //初始化路2:无实参,也可以是CBox(){}; double volume()//计算体积 { return m_Length*m_Height*m_Width; } }; int _tmain(int argc, _TCHAR* argv[]) { CBox box1{ 10.0, 10.0, 10.0 };//有实参 CBox box2;//默认初始化 cout << "Volume of box1=" << box1.volume() << endl; cout << "Volume of box2=" << box2.volume() << endl; return 0; }
结果:
分析:
当类实体化的时候,默认进入与其相同名字的构造函数,当实体化对象时,如果存在实参,则将初始值一一对应lv,wv,hv赋值;如果没有实参,则使用没有函数体的默认构造函数,初始值为1.0;
优化代码:
#include <iostream> using namespace std; class CBox { public: double m_Length; double m_Width; double m_Height; CBox(double lv=1.0, double wv=1.0, double hv=1.0)// 将上面分开初始化的方式合并; { cout << "Constrcurtor called." << endl; m_Height = hv; m_Length = lv; m_Width = wv; } double volume() { return m_Length*m_Height*m_Width; } }; int _tmain(int argc, _TCHAR* argv[]) { CBox box1{ 10.0, 10.0, 10.0 }; CBox box2; cout << "Volume of box1=" << box1.volume() << endl; cout << "Volume of box2=" << box2.volume() << endl; return 0; }
上一篇: 大型企业计算机终端安全管理现状与策略分析
下一篇: 一款简洁的纯css3代码实现的动画导航