●●● ●●●●● 构造函数 ●●●● ●●● ● 构造函数的函数名必须与类名相同。构造 函数的主要作用是完成初始化对象的数据 成员以及其它的初始化工作。 在定义构造函数时,不能指定函数返回值 的类型,也不能指定为void类型。 个类可以定义若干个构造函数。当定义 多个构造函数时,必须满足函数重载的原 则
构造函数 • 构造函数的函数名必须与类名相同。构造 函数的主要作用是完成初始化对象的数据 成员以及其它的初始化工作。 • 在定义构造函数时,不能指定函数返回值 的类型,也不能指定为void类型。 • 一个类可以定义若干个构造函数。当定义 多个构造函数时,必须满足函数重载的原 则。 6
●●● ●●●●● ●●●● 构造函数的定义 ●●● ● class<类名> 构造函数必须 为公有函数 构造函数名与 所属类名相同 public: 构造函数 无返回值 <类名>(参数表) {函数体} 构造函数的函 数体
构造函数的定义 class <类名> { public: <类名> (参数表) {函数体} } 构造函数的函 数体 构造函数名与 所属类名相同 构造函数 无返回值 构造函数必须 为公有函数 7
●●● ●●●●● 构造函数 ●●●● ●●● ● ●构造函数可以指定参数的缺省值。 若定义的类要说明该类的对象时,构造函 数必须是公有的成员函数。如果定义的类 仅用于派生其它类时,则可将构造函数定 义为保护的成员函数。 由于构造函数属于类的成员函数,它对私 有数据成员、保护的数据成员和公有的数 据成员均能进行初始化
构造函数 ⚫ 构造函数可以指定参数的缺省值。 ⚫ 若定义的类要说明该类的对象时,构造函 数必须是公有的成员函数。如果定义的类 仅用于派生其它类时,则可将构造函数定 义为保护的成员函数。 ⚫ 由于构造函数属于类的成员函数,它对私 有数据成员、保护的数据成员和公有的数 据成员均能进行初始化。 8
●●● ●●●●● ●●●● 构造函数 ●●● ● 属性 构造函数 目的 类的公有成员函数 实现成员数据初始化 实现 私有数据成 保护数据成员 公有数据成员
私有数据成员 保护数据成员 构造函数 属性 构造函数 公有数据成员 类的公有成员函数 目的 实现成员数据初始化 实现 9
●●● ●●●●● ●●●● 例1 ●●● ● class a 构造函数 float x, y; 初始化对象 public A(float a, float b( x=a; y=b; / float Sum(void)i return X+y;) Print(void) cout<<x<<x<<It'<y=<<y<<end; void main(void 定义时调用构造 {Aal(2.0,3.0) 函数进行成员数 Aa2(1.0,2,0); 据的初始化 al. Print(; a2. Print(; x-2y=3 X=1y=2
例1: class A { float x,y; public: A(float a,float b){ x=a; y=b;}// float Sum(void) { return x+y;} Print(void) { cout<<"x="<<x<<'\t'<<"y="<<y<<endl;} }; void main(void) { A a1(2.0, 3.0); A a2(1.0,2.0); a1.Print(); a2.Print(); } 构造函数, 初始化对象 定义时调用构造 函数进行成员数 据的初始化 x=2 y=3 x=1 y=2 10