- 3
- 0
- 约1.68万字
- 约 84页
- 2017-01-01 发布于河南
- 举报
MFC第四章
第四章 类的高级部分 4.1静态成员 问题提出? 例:一个学生类,定义其对象张三、李四,他们分别维护着类成员的一份副本(学号、姓名、籍贯等)。 如果要统计一个班学生总数? 用类外的变量记录,破坏数据隐藏。 用类的一个数据成员记录,导致多个副本,不仅冗余,而且势必造成数据不一致。 静态成员 静态数据成员 用关键字static声明 该类的所有对象维护该成员的同一个拷贝 必须在类外定义和初始化,用(::)来指明所属的类。 静态成员函数 类外代码可以使用类名和作用域操作符来调用静态成员函数。 静态成员函数只能引用属于该类的静态数据成员或静态成员函数。 静态成员变量例子 静态成员函数 静态成员函数不能访问类的非静态成员. Example: Program 4-2. 4.2 友元 友元函数不是类的成员,但可以访问类的私有成员变量。 友元函数可能是一个独立的函数,或者是其它类的成员函数 ( 事实上一个完整的类都可以定义为另一个类的友元.) Example: Program 4-3. 4.2 友元(续) 可以把一个类定义为另一个类的友元 Example: friend class Aux; Aux类的每一个成员(包括后续扩展的成员)都可以访问Budget类的私有成员 4.3 对象赋值问题 赋值运算符=可以将一个对象赋值给另外一个对象,缺省情况下,该操作执行的对象成员之间的拷贝。 Example: Program 4-4. 4.3 对象赋值(续) 赋值和初始化之间的区别: 复制发生在已经存在的两个对象之间,而初始化发生在对象创建的时候。 Example: Rectangle box1; box1. setData(100, 50); Rectangle box2 = box1; // initialization 4.4 拷贝构造函数 拷贝构造函数是一个特殊的构造函数,当定义一个对象并采用同类型的另一个对象初始化时会自动调用。 通常,采用缺省的按位拷贝操作也能正确实现赋值。 Example: 使用常参数 缺省拷贝构造函数 如果一个类没有拷贝构造函数,C++会自动为它创建一个缺省的拷贝构造函数。 缺省拷贝构造函数执行按位赋值。 三种情况下拷贝构造函数被调用 class Point { public: Point(int xx=0,int yy=0){X=xx; Y=yy;} Point(Point p); int GetX() {return X;} int GetY() {return Y;} private: int X,Y; }; Point::Point (Point p) { X=p.X; Y=p.Y; cout拷贝构造函数被调用endl; } 当用类的一个对象去初始化该类的另一个对象时系统自动调用它实现拷贝赋值。 void main(void) { Point A(1,2); Point B(A); //拷贝构造函数被调用 coutB.GetX()endl; } 若函数的形参为类对象,调用函数时,实参赋值给形参,系统自动调用拷贝构造函数。例如: void fun1(Point p) { coutp.GetX()endl; } void main() { Point A(1,2); fun1(A); //调用拷贝构造函数 } 当函数的返回值是类对象时,系统自动调用拷贝构造函数。例如: Point fun2() { Point A(1,2); return A; //调用拷贝构造函数 } void main() { Point B; B=fun2(); } 既然拷贝构造函数是完成对象之间的拷贝,那其函数体是否还有编写的必要 一个问题? 4.5 运算符重载 回顾多态性的概念 多态性是面向对象程序设计的重要特征之一。 多态性是指发出同样的消息被不同类型的对象接收时导致完全不同的行为。 多态的实现: 函数重载 运算符重载 虚函数 问题举例—复数的运算 class complex //复数类声明 { public: complex(double r=0.0,double i=0.0){real=r;imag=i;} //构造函数 void display(); //显示复数的值 private: double real; doubl
您可能关注的文档
最近下载
- 制造业信息化战略规划实施与优化-PDM.docx VIP
- 那智不二越机器人flexgui toolbox操作说明书.pdf VIP
- 智慧工厂-智慧工厂解决方案.docx VIP
- 高中化学解题方法归纳:和量法.doc VIP
- 译林牛津新版高中英语(必修1-3)单词表.pdf VIP
- 包装有限公司分切机安全风险分级清单.docx VIP
- 重庆市西南大学附属中学2025届高三下学期二诊模拟考试物理试卷 含解析.docx VIP
- 【高中英语】《星火英语同步词汇》抗遗忘速记手册.docx VIP
- 成都市锦江区2026届初三一诊(暨期末考试)数学试卷(含答案).docx
- 三坐标 培训教程.pptx VIP
原创力文档

文档评论(0)