学校网站平台建设方案,网络公司排名中国,贵州省建设厅官方网站电话,wordpress设计类模板一、构造函数
构造函数用来在创建对象时初始化对象#xff0c;为对象数据成员赋初始值。
类的数据成员是不能在类定义时初始化的#xff0c;类定义并没有产生一个实体#xff0c;而是给出了一个数据类型#xff0c;不占用存储空间#xff0c;无处容纳数据。
如果一个类…一、构造函数
构造函数用来在创建对象时初始化对象为对象数据成员赋初始值。
类的数据成员是不能在类定义时初始化的类定义并没有产生一个实体而是给出了一个数据类型不占用存储空间无处容纳数据。
如果一个类所有的数据成员是公有的public则可以在定义对象时对数据成员进行初始化。 C提供了构造函数constructor来处理对象的初始化问题。构造函数是类的一种特殊成员函数不需要人为调用而是在建立对象时自动被执行。
C规定构造函数的名字与类的名字相同并且不能指定返回类型。
#include iostreamusing namespace std;class Cuboid{
public:Cuboid(int l, int h, int d);int volume(){return length * height * depth;}
private:int length, height, depth;
};Cuboid::Cuboid(int l, int h, int d)
{length l;height h;depth d;
}int main()
{Cuboid a(1, 2, 3);cout volume a.volume() endl;Cuboid b(10, 20, 30);cout volume b.volume() endl;return 0;
}1构造函数是在创建对象时自动执行的而且只执行一次并先于其他成员函数执行。构造函数不需要人为调用也不能被人为调用。
2构造函数一般声明为公有的public因为创建对象通常是在类的外部进行的。
3一般不提倡在构造函数中加入与初始化无关的内容。
4每个构造函数应该为每个数据成员提供初始化。
与普通函数一样构造函数具有函数名、形参列表和函数体。与其他函数不同的是构造函数可以包含一个构造函数初始化列表 #include iostream
using namespace std;
class Cuboid{public:Cuboid(int l, int h, int d);int volume(){return length * height * depth;}private:int length, height, depth;
};Cuboid::Cuboid(int l, int h, int d) : length(l), height(h), depth(d)
{cout length height depth endl;
}int main()
{Cuboid a(1, 2, 3);cout a.volume() endl;return 0;
}
二、构造函数的重载
#include iostream
using namespace std;
class Point{public:Point(){x 0;y 0;}Point(int a, int b): x(a), y(b){}void display(){cout x y endl;}private:int x, y;
};int main()
{Point m;m.display();Point n(5, 20);n.display();return 0;
}
尽管一个类中可以包含多个构造函数但对于每一个对象来说建立对象时只执行其中一个并非每个构造函数都被执行。
三、带默认参数的构造函数
#include iostream
using namespace std;
class Point{public:Point(int a0, int b0) : x(a), y(b){ }void display(){cout x y endl; }private:int x, y;
};int main()
{Point k, m(1), n(1, 2);k.display();m.display();n.display();return 0;
}
1必须在类的内部指定构造函数的默认参数不能在类外部指定默认参数。 2如果构造参数的全部参数都指定了默认值则在定义对象时可以给一个或几个实参也可以不给出实参。
3在一个类中定义了带默认参数的构造函数后不能再定义与之有冲突的重载构造函数。
一般地不应同时使用构造函数的重载和带默认参数的构造函数。