类的封装性

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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:

相关文档
最新文档