C++ 复习题(武汉大学) - 图文

更新时间:2023-12-27 02:52:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1 8 9 11 12 13 15!16 20 21 23 24 25 26 28 29 31 37 (三道没号的) 27 29 30 31 32 1 2 6 7 无号41 44 45 4 6 7 8 10 12 20 37 无号 30 31 33

1) 下列关于对象概念的描述中,(a)是错误的。 A. 对象就是C语言中的结构变量 B. 对象代表着正在创建的系统中的一个实体 C. 对象是一个状态和操作(或方法)的封装体 D. 对象之间的信息传递是通过消息进行的 2) #include #include void main() { cout.fill('*'); cout.width(10); cout<<\ cout.width(8); cout<<\ cout.width(4); cout<<\ } 程序运行的结果是(B)。 A. ****123.45 **1234.45 *1234.45 B. ****123.45 *1234.45 1234.45 C. ****123.45 **1234.45 *1234.45 D. *****123.45 ***1234.45 *1234.45 3) 分析下面的C++代码段: class Employee { private: int a; protected: int b; public: int c; }; class Director:public Employee{}; 在Main()中,下列(c)操作是正确的。 a) Employee obj;

obj.b=1;

b) Director boj;

obj.b=10;

c) Employee obj;

obj.c=3;

d) Director obj;

obj.a=20;

4) #include #define SQR(x) x*x void main() {

int a=10,k=2,m=1; a/=SQR(k+m); cout<

执行上面的C++程序后,a的值是(b)。(选择一项) a) 10 b) 2 c) 9 d) 0

不要忘了sqr中的x不是一个变量,编译器仅仅是把x替换为10+2,因此sqr(10+2)的结果是10+2*10+2,当然是32咯。为了避免这种情况,这样写就没问题了:

#define sqr(x) ( (x) * (x) )

5) 在C++语言中,下列语句中,正确的是(d)。 a) void main() { cout<

7) #include { //This is my first program cout<<\ } 这段C++程序的输出是(d)。 a) My first program in C++ b) This is my first program c) My first Program in C d) None of the above 8) #include class example { private:

static int num; public: example(){num++;cout<

9) 在c++中下列声明之间有(B)不同。 const int * myptr1=# int * const myptr2=# A. 根本没有不同 B.不能用myptr1改变常整数的内容,然而可以用myptr2改变它指向的整数的内容 C.不能用myptr2改变常整数的内容,然而可以用myptr1改变它指向的整数的内容 10) 在C++中,一个函数为void f(int=1,char='a'),另一个函数为void f(int),则它们(b)。 a) 不能在同一程序中定义 b) 可以在同一程序中定义并可重载 c) 可以在同一程序中定义,但不可重载 d) 以上说法都不正确 11) C++ 基类中的private成员通过(d)类型的继承,可以被派生类访问。 a) public b) protected c) private d) 任何类型的继承都不能使得派生类可以访问基类的private成员 12)下列概念()体现了面向对象的多态性。(b) a) 虚基类 b) 虚函数 c) 对象容器 d) 封装 13) #include class One { public: void display(){cout<<\ }; class Two:public One {

public:

void display(){cout<<\ }; void main() { One first; Two second; first.display(); second.display(); One *p=&first; p->display(); p=&second; p->display(); } 在C++中,以上程序的运行结果为(c)。 a) 1 1 1 2 b) 1 2 1 2 c) 1 2 1 1 d) 2 1 1 2 14}

15) 对于C++类 class date { private: int day,month,year; public: void setdate(int,int,int); print(); }; 下列描述是正确的(d)。(选择两项) a) setdate()函数内参数没有写变量名,因而它是错误的; b) year是私有的,print()是公有的,setdate()可以访问day,而print()不能访问day c) setdate()可以访问day,而print()不能访问day d) setdate()可以访问day,而print()也可以访问day 16) 在C++中,可以重载的运算符有(d)。 a) sizeof() b) :: c) .* d) ++ 17) #include class date { private: int day ,month,year ; public: date(){} date(int x,int y,int z){day=x;month=y,year=z;} void set(){day=1;month=10;year=2002;} void display(){cout<

}; void main() { date day1; date day2(10,10,2002); day1.set(); day1.display(); day2.display(); } 上面C++程序运行的结果是(b)。 a) 10/10/2002 1/10/2002 b) 1/10/2002 10/10/2002 c) 10/10/2002 10/10/2002 d) 1/10/2002 1/10/2002 18) #include class A { public: A(){cout<<\ }; class B:public A { public: B():A(){cout<<\ }; void main(){B obj;} 上面的C++程序运行的结果是(b)。 a) B construct A construct b) A construct B construct c) A construct d) B construct 19) class wheel { int num; public:

wheel (int w){num=w;} }; class car

{ wheel carWheel; public: //写出car的构造函数 } 在C++中,上面程序中,空白处正确的语句是(b)。 a) void car(int n)::carWheel(n){} b) car(int n): carWheel(n){} c) void car(int n):: carWheel(n){} d) car(int n):: carWheel(n){}

A)构造函数可以重载,析构函数不能重载 B)构造函数不能重载,析构函数可以重载 C)构造函数可以重载,析构函数也可以重载 D)构造函数不能重载,析构函数也不能重载 下面程序的运行结果为(C) #include(iostream. h> class A {

int num; public:

A(int i){num=i;}

A(A &a){num=a. num++;} void print(){cout<

void main() {

A a(2),b(a); a. print(); b.print();

A)2 3 B)3 3 C)3 2 D)2 2

下面对静态数据成员的描述中,正确的是(A) A)静态数据成员是类的所有对象共享的数据 B)类的每个对象都有自己的静态数据成员 C)类的不同对象有不同的静态数据成员值 D)静态数据成员不能通过类的对象调用 27)如果类A被说明成类B的友元,则(D) A)类A的成员即类B的成员 B)类B的成员即类A的成员

C)类A的成员函数不得访问类B的成员 D)类B不一定是类A的友元

(28)可以用p.a的形式访问派生类对象p的基类成员a,其中a是(d) A)私有继承的公有成员 B)公有继承的私有成员

C)公有继承的保护成员 D)公有继承的公有成员

29)建立派生类对象时,3种构造函数分别是a(基类的构造函数)、b(成员对象的构造函数)、c(派生类的构造函数)这3种构造函数的调用顺序为(a) A)abc B)acb C)cab D)cba

(30)下面关于虚函数的描述,错误的是(B)

A)在成员函数声明的前面加上virtual修饰,就可把该函数声明为虚函数 B)基类中说明了虚函数后,派生类中对应的函数也必须说明为虚函数 C)虚函数可以是另一个类的友元函数,但不能是静态成员函数 D)基类中说明的纯虚函数在其任何派生类中都必须实现 (31)下面关于模板的描述,错误的是(A)

A)函数模板和类模板的参数可以是任意的数据类型

B)类模板不能直接使用,必须先实例化为相应的模板类.然后定义了模板类的对象后才能使用 C)函数模板不能直接使用,需要实例化为模板函数后才能使用 D)类模板的成员函数都是模板函数 (32)语句ofstream f(”SALARY. DAT\,ios::app iios::binary);的功能是建立流对象f,试图打开文件SAL:aRY. D AT并与之连接,并且(A)

A)若文件存在,将文件写指针定位于文件尾;若文件不存在,建立一个新文件 B)若文件存在,将其置为空文件;若文件不存在,打开失败

C)若文件存在,将文件写指针定位于文件首;若文件不存在,建立一个新文件 D)若文件存在,打开失败;若文件不存在,建立一个新文件 (33)下面程序的运行结果是(C) #include void main() {

int num=1;

int &ref=num: ref=ref+2; cout<

A)13 B)16 C)36 D)33 (35)下列程序的运行结果为(c) #include int i=0; class A {

public: A(){i++;} };

void main() {

A a,b[3],*c; c=b;

cout<

} A)2 B)3 C)4 D)5

(1)C++语言是从早期的C语言逐渐发展演变而来的.与C语言相比,它在求解问题方法上进行的最大改进是(B)

A)面向过程 B)面向对象 C)安全性 D)复用性

(2)C++语言的跳转语句中,对于break和continue说法正确的是() A)break语句只应用于循环体中 B)continue语句只应用于循环体中

C)break是无条件跳转语句,continue不是

D)break和continue的跳转范围不够明确,容易产生问题 (5)下面有关重载函数的说法中正确的是(C)

A)重载函数必须具有不同的返回值类型; B)重载函数形参个数必须不同; C)重载函数必须有不同的形参列表 D)重载函数名可以不同; 6)下列关于构造函数的描述中,错误的是(D)

A)构造函数可以设置默认参数; B)构造函数在定义类对象时自动执行

C)构造函数可以是内联函数; D)构造函数不可以重载 (7)下面描述中,表达错误的是(B)

A)公有继承时基类中的public成员在派生类中仍是public的 B)公有继承是基类中的private成员在派生类中仍是private的 C)公有继承时基类中的protected成员在派生类中仍是protected的 D)私有继承时基类中的public成员在派生类中是private的

在c++中,下列关于友元函数和成员函数的区别,(b)是正确的。 a)都具有this指针 b)友员函数不具有this指针,而成员函数则具有。 c)友员函数的定义和成员函数的定义相同,都需要类名加上作用域算符::为前纵 d)友员函数的定义与成员函数一样需要以类名加上作用域运算符::为前纵 38 在C++中,const关键字可以在函数的参数中使用,下列函数定义 () 是正确的。 选两个 a) void func(const char *str) { str=\ b) void func(const int num) { num=10 } c) void func(const char*str){*str='c';} d) void func(const int*num){int data=10;num=&data;} 39) #include class example { private: static int num; public: example(){num++;cout<

40) 在c++中,下列关于友元函数和成员函数的区别,(b)是正确的。 a)都具有this指针 b)友员函数不具有this指针,而成员函数则具有。 c)友员函数的定义和成员函数的定义相同,都需要类名加上作用域算符::为前纵 d)友员函数的定义与成员函数一样需要以类名加上作用域运算符::为前纵 41 在C++类的说明符中,被指定为私有的数据可以被以下()访问。(选择一项) a)程序中的任何函数 b)其他类的成员函数

c)类中的成员函数

d)派生类中的成员函数

42 #include class A {public: A(){cout<<\ ~A(){cout<<\ }; class B:public A { public: B():A(){cout<<\ ~B():A()RAVSKYUP{cout<<\ }; void main(){\ 上面的C++程序运行的结果是()。(选择一项) a) B construct A construct B destroy A destroy b) A construct B construct A destroy B destroy c) A construct B construct B destroy A destroy d) B construct A construct A construct B construct 43 #include class sample { private: int a,b; public: sample(int x ){a=x;b=1;cout<44 在C++中,下列关于虚函数的描述,()是正确的。(选择一项) a) 虚函数实现了运行时的多态 b) 虚函数只能在基类中实现,而不能在派生类中实现 c) 虚函数不需要在基类中声明 d) 虚函数只能在派生类中声明

45 与传统的过程编程不同,面向对象方法的主要思想是( )。(选两项) a) 真实反映用户的实际需求 b) 将现实世界的一些抽象为实体或对象

c) 将现实世界细分为一个个过程化实现 d) 将软件组织成为对象的集合,将数据结构和行为结合在一起 一、 1. 在 ( ) 情况下适宜采用 inline 定义内联函数。

A. 函数体含有循环语句 B. 函数体含有递归语句 C. 函数代码少、频繁调用 D. 函数代码多、不常调用

2. 在类中说明的成员可以使用关键字 ( ) 进行修饰。

A. private B. extern C. auto D. register

3. 如果类 A 被说明成类 B 的友元,则 ( ) 。 A. 类 A 的成员即类 B 的成员 B. 类 B 的成员即类 A 的成员

C. 类 A 的成员函数不得访问类 B 的成员 D. 类 B 不一定是类 A 的友元

4. 定义析构函数时,应该注意 ( ) 。

A. 其名与类名完全相同 B. 返回类型是 void 类型

C. 无形参,也不可重载 D. 函数体中必须有 delete 语句 5. 在类中声明转换函数时不能指定 ( ) 。 A. 参数 B. 访问权限 C. 操作 D. 标识符

6. 在派生类中重新定义虚函数时必须在 ( ) 方面与基类保持一致。 A. 参数类型 B. 参数名字 C. 操作内容 D. 赋值

7. 在公有继承的情况下,基类成员在派生类中的访问权限 ( ) 。 A. 受限制 B. 保持不变 C. 受保护 D. 不受保护

8. 通过 ( ) 调用虚函数时,采用动态束定。 A. 对象指针 B. 对象名

C. 成员名限定 D. 派生类名

9. 在 int a=3,*p=&a; 中, *p 的值是 ( ) 。 A. 变量 a 的地址值 B. 无意义 C. 变量 p 的地址值 D. 3

10.C++ 类体系中,不能被派生类继承的有 ( ) 。 A. 转换函数 B. 构造函数 C. 虚函数 D. 静态成员函数

11. 假定一个类的构造函数为 A(int aa,int bb){a=aa++;b=a*bb++;} ,则执行 Ax(4,5); 语句后, x.a 和 x.b 的值分别为 ( ) 。 A. 4 和 5 B. 5 和 4 C. 4 和 20 D. 20 和 5

12. 假定 AB 为一个类,则执行 AB x ;语句时将自动调用该类的 ( ) 。 A. 有参构造函数 B. 无参构造函数 C. 拷贝构造函数 D. 赋值构造函数 13.C++ 语言建立类族是通过 ( ) 。 A. 类的嵌套 B. 类的继承 C. 虚函数 D. 抽象类

14. 执行语句序列 ofstream outf( “ SALARY.DAT ” ) ; if(...)cout<< “成功”; else cout<< “失败”;后,如文件打开成功,显示”成功”,否则显示”失败” . 由此可知,上面 if 语句的条件表达式是 ( ) 。

A. !outf 或者 outf.fail() B.!outf 或者 outf.good() C. outf 或者 outf.fail() D. outf 或者 outf.good()

15. 静态成员函数不能说明为 ( ) 。 A. 整型函数 B. 浮点函数 C. 虚函数 D. 字符型函数

16. 在 C++ 中,数据封装要解决的问题是 ( ) 。 A. 数据规范化排列 B. 数据高速转换 C. 避免数据丢失 D. 保证数据完整性 17. 在 C++ 中有以下 4 条语句: static int hot=200;int &rad=hot;hot=hot+100;cout<

A. 0 B. 100 C. 300 D. 200

18. 如果 class 类中的所有成员在定义时都没有使用关键字 pubilc,private,protected ,则所有成员缺省定义为: ( ) 。

A. public B. protected C. private D. static

19.C++ 设置虚基类的目的是 ( ) 。 A. 消除二义性 B. 简化程序

C. 提高运行效率 D. 减少目标代码 20. 实现运行时的多态性用 ( ) 。 A. 重载函数 B. 构造函数 C. 析构函数 D. 虚函数 4) #include #define SQR(x) x*x void main() { int a=10,k=2,m=1; a/=SQR(k+m); cout<

9) 在c++中下列声明之间有(B)不同。 const int * myptr1=# int * const myptr2=# A. 根本没有不同 B.不能用myptr1改变常整数的内容,然而可以用myptr2改变它指向的整数的内容 C.不能用myptr2改变常整数的内容,然而可以用myptr1改变它指向的整数的内容 12)下列概念()体现了面向对象的多态性。(b) a) 虚基类 b) 虚函数 c) 对象容器

d) 封装 13) #include class One { public: void display(){cout<<\ }; class Two:public One {

public: void display(){cout<<\ }; void main() { One first; Two second; first.display(); second.display(); One *p=&first; p->display(); p=&second; p->display(); } 在C++中,以上程序的运行结果为(c)。 a) 1 1 1 2 b) 1 2 1 2 c) 1 2 1 1 d) 2 1 1 2

16) 在C++中,可以重载的运算符有(d)。 a) sizeof() b) :: c) .* d) ++ 17) #include class date { private: int day ,month,year ; public: date(){} date(int x,int y,int z){day=x;month=y,year=z;} void set(){day=1;month=10;year=2002;} void display(){cout<

day1.set(); day1.display(); day2.display(); } 上面C++程序运行的结果是(b)。 a) 10/10/2002 1/10/2002 b) 1/10/2002 10/10/2002 c) 10/10/2002 10/10/2002 d) 1/10/2002 1/10/2002 20)下面关于模版说法正确的是(a)。 a) 类模版提供了一种对类中类型进行参数化的方法; 在实例化模版类时,实际的数据类型会代替与类成员或方法相关联的类型参数 b) 类模版中必须包含类成员与类方法 c) 不可以用自定义的数据类型实例化一个模版类 d) 类模版中类方法的参数必须用占位符替代,而不能使用实际数据类型

22)在C++程序中出现(c)情况时,将引发一个异常。 a) 在main 函数的结尾少了一个大括号 b) for循环语法错误 c) 被零除或数组溢出 d) 数组没有被赋满值 24) #include class X { private: int num; public: X(int intx){num=intx;} X(X &Y) { num=++Y.num; } void disp(){cout<

31) 在C++中,(b)一定不能创建类的对象和实例. a) 虚基类

b) 抽象类 c) 基类 d) 派生类

34)读下面C++程序: #include class vehicle { protected: int wheels; public: vehicle(int in_wheels=4){wheels=in_wheels;} int get_wheels(){ return wheels;} }; void main() { vehicle unicyclel; vehicle unicycle2(3); cout<<\ cout<<\ }

编译后输出结果为(c)。 a)The unicycle1 has 0 wheel. The unicycle2 has 3 wheel. b)The unicycle1 has 4 wheel. The unicycle2 has 4 wheel. c)The unicycle1 has 4 wheel. The unicycle2 has 3 wheel. d)The unicycle1 has 0 wheel. The unicycle2 has 4 wheel. 37) 在C++中,运算符new的作用是(c) a) 创建名为new的对象 b) 获取一个新类的内存 c) 返回指向所创建对象的指针,并为创建的对象分配内存空间 d) 返回为所创建的对象分配内存的大小 下面对静态数据成员的描述中,正确的是(A) A)静态数据成员是类的所有对象共享的数据 B)类的每个对象都有自己的静态数据成员 C)类的不同对象有不同的静态数据成员值 D)静态数据成员不能通过类的对象调用 (30)下面关于虚函数的描述,错误的是(B)

A)在成员函数声明的前面加上virtual修饰,就可把该函数声明为虚函数 B)基类中说明了虚函数后,派生类中对应的函数也必须说明为虚函数 C)虚函数可以是另一个类的友元函数,但不能是静态成员函数 D)基类中说明的纯虚函数在其任何派生类中都必须实现 (31)下面关于模板的描述,错误的是(A)

A)函数模板和类模板的参数可以是任意的数据类型

B)类模板不能直接使用,必须先实例化为相应的模板类.然后定义了模板类的对象后才能使用 C)函数模板不能直接使用,需要实例化为模板函数后才能使用

D)类模板的成员函数都是模板函数 (33)下面程序的运行结果是(C) #include void main() {

int num=1;

int &ref=num: ref=ref+2; cout<

A)13 B)16 C)36 D)33 (35)下列程序的运行结果为(c) #include int i=0; class A {

public: A(){i++;} };

void main() {

A a,b[3],*c; c=b;

cout<

} A)2 B)3 C)4 D)5

(2)C++语言的跳转语句中,对于break和continue说法正确的是() A)break语句只应用于循环体中 B)continue语句只应用于循环体中

C)break是无条件跳转语句,continue不是

D)break和continue的跳转范围不够明确,容易产生问题

在c++中,下列关于友元函数和成员函数的区别,(b)是正确的。 a)都具有this指针 b)友员函数不具有this指针,而成员函数则具有。 c)友员函数的定义和成员函数的定义相同,都需要类名加上作用域算符::为前纵 d)友员函数的定义与成员函数一样需要以类名加上

¤C++语言对C语言做了很多改进,C++语言相对于C语言的最根本的变化是( D)。 A.增加了一些新的运算符

B.允许函数重载,并允许设置缺省参数 C.规定函数说明符必须用原型 D.引进了类和对象的概念

¤下列关于运算符重载的叙述中,正确的是(B )。 A.通过运算符重载,可以定义新的运算符 B.有的运算符只能作为成员函数重载

C.若重载运算符+,则相应的运算符函数名是+ D.重载一个二元运算符时,必须声明两个形参 ¤下列关于模板的叙述中,错误的是( D)。

A.调用模板函数时,在一定条件下可以省略模板实参 B.可以用int、double这样的类型修饰符来声明模板参数 C.模板声明中的关键字class都可以用关键字typename替代 D.模板的形参表中可以有多个参数

要利用C++流进行文件操作,必须在程序中包含的头文件是( B)。 A.iostream B.fstream C.strstream D.iomanip 有如下程序 #include

using namespace std; class Sample{ public:

Sample(){}

~Sample(){cout<

int main(){

Sample temp[2], *pTemp[2]; return 0; }

执行这个程序输出星号(*)的个数为( C)。 A.1 B.2 C.3 D.4

下列选项中,与实现运行时多态性无关的是(A )。 A.重载函数 B.虚函数 C.指针 D.引用

¤对类的构造函数和析构函数描述正确的是( A)。 A.构造函数可以重载,析构函数不能重载 B.构造函数不能重载,析构函数可以重载 C.构造函数可以重载,析构函数也可以重载 D.构造函数不能重载,析构函数也不能重载

¤在重载一个运算符时,如果其参数表中有一个参数,则说明该运算符是(D )。 A.一元成员运算符 B.二元成员运算符 C.一元友元运算符

D.选项B和选项C都可能

¤下列关于模板的说法正确的是( D)。 A.模板的实参在任何时候都可以省略 B.类模板与模板类所指的是同一概念 C.类模板的参数必须是虚拟类型的

D.类模板中的成员函数全部都是模板函数

¤在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是( C)。 A.派生类的对象可以赋给基类的对象

B.派生类的对象可以初始化基类的引用 C.派生类的对象可以直接访问基类中的成员

D.派生类的对象的地址可以赋给指向基类的指针

建立派生类对象时,3种构造函数分别是a(基类的构造函数)、b(成员对象的构造函数)、c(派生类的构造函数)这3种构造函数的调用顺序为( A)。 A.abc B.acb C.cab D.cba

¤下面关于虚函数的描述,错误的是(B )。

A.在成员函数声明的前面加上virtual修饰,就可把该函数声明为虚函数 B.基类中说明了虚函数后,派生类中对应的函数也必须说明为虚函数 C.虚函数可以是另一个类的友元函数,但不能是静态成员函数 D.基类中说明的纯虚函数在其任何派生类中都必须实现

¤定义派生类时,若不使用关键字显示地规定采用何种继承方式,则默认方式为(A )。 A.私有继承 B.非私有继承 C.保护继承 D.公有继承

下列关于对象初始化的叙述中,正确的是(c)

A)定义对象的时候不能对对象进行初始化

B)定义对象之后可以显式地调用构造函数进行初始化 C)定义对象时将自动调用构造函数进行初始化

D)在一个类中必须显式地定义构造函数实现初始化

¤(13)下列关于基类和派生类关系的叙述中,正确的是(d) A)每个类最多只能有一个直接基类

B)派生类中的成员可以访问基类中的任何成员

C)基类的构造函数必须在派生类的构造函数体中调用 D)派生类除了继承基类的成员,还可以定义新的成员

¤(14)下列关于赋值运算符“=”重载的叙述中,正确的是(A) A)赋值运算符只能作为类的成员函数重载 B)默认的赋值运算符实现了“深层复制”功能

C)重载的赋值运算符函数有两个本类对象作为形参

D)如果己经定义了复制(拷贝)构造函数,就不能重载赋值运算符 ¤(15)下列关于模板的叙述中,正确的是(C)

A)如果一个类中存在纯虚函数,这个类就是类模板 B)函数模板不能有形式参数表

C)类模板是一种参数化类型的类,是类的生成器 D)类模板中不能包含构造函数

(24)若要重载+、=、<<、=和[]运算符,则必须作为类成员重载的运算符是(D) A)+和=

B)=和<< C)==和<< D)=和[]

¤下列关于模板的说法正确的是( D)。 A.模板的实参在任何时候都可以省略 B.类模板与模板类所指的是同一概念 C.类模板的参数必须是虚拟类型的

D.类模板中的成员函数全部都是模板函数

1.什么是数据封装和信息隐藏?

答 我们生活在高科技时代的社会里,科技成果是人类共同拥有的财富.人们是在某程度的细节中生活.为了充分利用现代科技成果,减少必须处理的事情,根据所要达到的目的进行抽象,即抓住与目的有关的重要信息,忽略掉某些不重要的细节.例如,人类发明了电话,它已是人们进行通信的强有力工具之一。但人类的绝大多数只是以“使用它”作为目的,只需知道它的功能和使用方法就可以使用电话,而不必了解电话是如问实现通话的具体实现细节。因此电话制造厂家将它们放在电话机壳内隐藏起来,封装成一个自成一体的电话饥,这就是所谓“数据封装”而将一些操作按钮安装在机壳上作为人--机操作的接口界面.人们只需操作电话机壳上的操作键就可以控制电话机实现与外界的通话.无需知道封装单元内部是如何工作的就能使用它的思想称为”信息隐藏” 。

本文来源:https://www.bwwdw.com/article/320x.html

Top