第6章类与对象 6.1类与对象 6.14类的成员函数(续一) 2.内联成员函数 将成员函数的定义直接写在类中即成为内联成员函数 在类外定义时用 inline指出: inline void CRect: Setcolor(char *c) strcpy(color, c)
6.1 类与对象 6.1.4 类的成员函数(续一) 2. 内联成员函数 ➢将成员函数的定义直接写在类中即成为内联成员函数 ➢在类外定义时用inline指出: 如: inline void CRect::SetColor(char *c) { strcpy(color, c); } 第6章 类与对象
第6章类与对象 6.1类与对象 6.14类的成员函数(续二) 3.带默认参数值的成员函数 注意:默认参数只能在声明或定义中的一处给出,即 如在类中的函数声明已经给出默认参数值: void Set size int =100, int w=100) 则在函数定义时就不能再给出默认值 同样如果在定义时给出了默认值: void CRect Set Size(int 1=100, int W=100) length=l width W 在声明处就不能再给默认值了。 返回
6.1 类与对象 6.1.4 类的成员函数(续二) 3. 带默认参数值的成员函数 注意:默认参数只能在声明或定义中的一处给出,即 如在类中的函数声明已经给出默认参数值: void SetSize(int l=100, int w=100); 则在函数定义时就不能再给出默认值。 同样如果在定义时给出了默认值: void CRect::SetSize(int l=100, int w=100) { length=l; width = w; } 在声明处就不能再给默认值了。 第6章 类与对象 返 回
第6章类与对象 6.2构造函数与析构函数 构造函数:对对象进行初始化。 析构函数:在对象销毁时进行内存释放等清理工作。 621构造函数 1.构造函数的特点 (1)构造函数的函数名与类名相同 (2)不能定义构造函数的类型(即不能指明构造函数返回值的 类型,即使void类型也不可以)。 (3)构造函数应声明为公有函数。 (4)构造函数不能在程序中调用,在对象创建时,构造函数被 系统自动调用。 2构造函数的作用 构造函数的作用就是在对象被创建时利用特定的值构造对象, 将对象初始化为一个特定的状态,使此对象具有区别于其它对象 的特征
6.2 构造函数与析构函数 构造函数:对对象进行初始化。 析构函数:在对象销毁时进行内存释放等清理工作。 6.2.1 构造函数 1. 构造函数的特点 (1) 构造函数的函数名与类名相同。 (2) 不能定义构造函数的类型(即不能指明构造函数返回值的 类型,即使void类型也不可以)。 (3) 构造函数应声明为公有函数。 (4) 构造函数不能在程序中调用,在对象创建时,构造函数被 系统自动调用。 2. 构造函数的作用 构造函数的作用就是在对象被创建时利用特定的值构造对象, 将对象初始化为一个特定的状态,使此对象具有区别于其它对象 的特征。 第6章 类与对象
第6章类与对象 例为CRec类添加构造函数 class CRect private: char color[10]; public CRect(; CRect(char*C, int t, int left, int len, int wid); void SetColor(char*c); 二者是重载函数,在定义对象时, 如果不给出参数,就自动调用第 CRect: C Recto 个构造函数,如果给定5个参数就 自动调用第二个构造函数。 strcpy (color, "Black") top=0 left=o length=0; width =0
例 为CRect类添加构造函数 class CRect { private: char color[10]; …… public: CRect( ); CRect(char *c, int t, int left, int len, int wid); void SetColor(char *c); …… }; CRect::CRect() { strcpy(color, "Black"); top = 0; left = 0; length = 0; width = 0; } 二者是重载函数,在定义对象时, 如果不给出参数,就自动调用第一 个构造函数,如果给定5个参数就 自动调用第二个构造函数。 第6章 类与对象
第6章类与对象 例为 CRect类添加构造函数(续) CRect: CRect(char*C, int t, int lef, int len, int wid) strcpy(color, c) top= t left= let length= len width wid void maino C Rect r1 ∥自动调用第一个构造函数 CRect r2(“red",10,10,100,100);∥自动调用第二个构造函数 CRect r3(" green",200,200,50,50);∥自动调用第二个构造函数 r1. Draw r2. Draw r3. Draw
例 为CRect类添加构造函数(续) CRect::CRect(char *c, int t, int lef, int len, int wid ) { strcpy(color, c); top = t; left = lef; length = len; width = wid; } void main() { CRect r1; //自动调用第一个构造函数 CRect r2(“red”, 10,10,100,100); //自动调用第二个构造函数 CRect r3("green", 200,200,50,50); //自动调用第二个构造函数 r1.Draw(); r2.Draw(); r3.Draw(); } 第6章 类与对象