类的封装性
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C++讲稿
1.输入、输出语句
输出语句
例输出10、16、8进制整数
//ex2_8.cpp
#include "iostream.h"
#include "iomanip.h"
void main()
{
int a=1508;
cout< cout< cout< } 运行结果是: Decimal :1508 Hexadecimal :5e4 Octal :2744 表2.5 I/O流的常用控制符 例2.8从键盘输入三个实数,求其中的最大值,输出时要求10个有效位数。 //ex2_10.cpp #include "iostream.h" #include "iomanip.h" void main() { double a,b,c; cin>>a>>b>>c; double d=a>b?a:b; double e=c>d?c:d; cout<<"max="< } 运行结果是: 456.78476 23784.657648 99.5↓ max=23784.65765 2.函数重载 函数重载 同一个函数名可以用于多个函数的定义,即用于多个函数的实现,称函数重载。函数的函数名相同,它们的差别就在于参数的类型或个数不相同。编译系统能够唯一地确定调用哪个函数,就利用调用时所传递的实参类型和个数,以及它们的顺序是否跟该函数的定义和说明一致。因此实现同名函数重载,一定要在函数定义时函数参数的类型和个数或顺序上有所不同,否则实现不了同名函数的重载。 例函数重载举例 //ex5_4.cpp #include "iostream.h" int max(int,int); int max(int,int,int); double max(double,double); double max(double,double,double); void main() { cout<<"maxi2="< cout<<"maxi3="< cout<<"maxd2="< cout<<"maxd3="< } int max(int x,int y) { return x>y? x:y; } int max(int x,int y,int z) { int c=max(x,y); return z>c? z:c; } double max(double x,double y) { if(x>y) return x; else return y; } double max(double x,double y,double z) { double c=max(x,y); double d=max(c,z); return d; } 运行结果: maxi2=6 maxi3=7 maxd2=6.3 maxd3=7.8 以上例题可见,4个函数的函数名都是max,但形参的类型和个数不同,编译系统根据实参的类型和个数可以区分出要调用的是哪个函数。 函数参数的默认值 调用函数时,若所用的实参有一个经常用的值,此时说明函数原型时,可以用该值作为函数参数的默认值,凡给过默认值的参数,在调用时可以给实参,也可以不给实参(此时实参为默认值)。下例是个延时函数,调用时给实参按实参延时,不给实参按默认值延时。 例函数默认值举例 //ex5_5.cpp #include "iostream.h" void delay(int t) { if(t==0) return; for(int i=0;i cout<<"i="< } void main() { void delay(int=1000); // 声明默认值参数 delay(0); delay(50); delay(500); delay(); delay(5000); } 运行结果: i=50 i=500 i=1000 (默认值参数得到的结果) i=5000 如果函数参数有多个,可以全部声明为默认参数,也可以只有部分参数声明为默认值。部分参数有默认值时,默认参数应从右至左逐个给出。若有三个函数参数的add()函数,默认值有如下声明: int add(int=5,int=7,int=8); // 正确,全部参数声明为默认值 int add(int,int=7,int=8); // 正确,两个参数声明为默认值 int add(int,int,int=8); // 正确,一个参数声明为默认值 int add(int=5,int=7,int);// 错,违背了自右至左逐个给出的原则 int add(int,int=7,int); // 错,违背了自右至左逐个给出的原则 注意,带有默认参数的重载函数,可能会引起调用的歧义性,如有一组重载函数的原型说明如下: int fu(int); int fu(int, int=8); int fu(int, int=8,int=9); 则调用时若用表达式fu(12),编译系统就区分不出调用上面三个函数中的哪一个,因此在声明函数参数默认值时,应避免这种情况的发生,上面这样的重载函数,不声明默认值时,它们的重载仍然有效。 3.类 类的成员有二种,数据成员和成员函数,数据成员又称为属性,成员函数又称为方法、操作或实现。通常成员函数是处理数据成员的,如果成员函数与数据成员毫无关系,那么该成员函数就没有存在的必要了。类的定义格式一般分成二部分,一部分是说名部分,说明类中的数据成员和成员函数,另一部分是实现部分,就是定义成员函数。说明部分表明了该类有什么功能,实现部分是实现这些功能的详细过程,用户通常只关心说明部分,以便知道如何来使用该类的功能。 类的一般定义格式如下: (1)说明部分 class 类名 { public: 数据成员和成员函数 private: 数据成员和成员函数 protected: 数据成员和成员函数 }; (2)成员函数的实现部分 简单复数运算类示例 //ex7_1.h #include "iostream.h" #include "math.h" //类的说明部分 class CComplex { private: