C++面向对象程序设计习题 类与对象

合集下载

c面向对象程序设计课后习题

c面向对象程序设计课后习题

c面向对象程序设计课后习题面向对象程序设计是一种以对象为基本单位的编程范式,它强调数据和行为的封装、继承和多态性。

以下是一些面向对象程序设计的课后习题,旨在帮助学生巩固和深化对面向对象概念的理解。

习题一:封装的实现1. 定义一个类 `Person`,包含私有属性 `name` 和 `age`。

2. 实现公共方法 `getName()` 和 `setName(String name)` 来获取和设置 `name` 属性。

3. 实现公共方法 `getAge()` 和 `setAge(int age)` 来获取和设置`age` 属性。

4. 添加一个构造器,允许在创建 `Person` 对象时初始化 `name` 和`age`。

习题二:继承的应用1. 定义一个基类 `Vehicle`,包含属性 `speed` 和方法 `move()`.2. 创建一个派生类 `Car`,继承自 `Vehicle`,添加属性 `wheels` 和 `color`.3. 重写 `move()` 方法,以反映汽车的移动特性。

4. 添加一个构造器,允许初始化 `Car` 对象的所有属性。

习题三:多态性的使用1. 定义一个接口 `Animal`,包含一个抽象方法 `makeSound()`.2. 创建几个实现类,如 `Dog`,`Cat`,`Bird`,它们都实现了`Animal` 接口。

3. 为每个类实现 `makeSound()` 方法,以产生不同的声音。

4. 编写一个测试类,创建 `Animal` 类型的数组,包含不同种类的动物对象,并调用 `makeSound()` 方法。

习题四:抽象类的使用1. 定义一个抽象类 `Shape`,包含抽象方法 `calculateArea()`.2. 创建几个具体类,如 `Circle`,`Rectangle`,`Triangle`,它们继承自 `Shape` 并实现 `calculateArea()` 方法。

面向对象程序设计模拟题(C)

面向对象程序设计模拟题(C)

面向对象程序设计模拟题一、简答题:1. 什么是对象?什么是对象的事件和方法?试列举几个常用的事件和方法?答:对象是代码和数据的组合,可以作为一个单位来处理。

对象可以使应用程序的一部分,也可以是整个应用程序。

对象事件是对象可以识别的动作,即窗体、控件和其他对象可以识别的动作。

常用的事件有Click事件、Paint事件、Load事件等。

方法是对象要执行的动作,常见的有Clear、AddIRem、RemoveITem等。

2.VB有几种类型的表达式?请举例说明。

答:VB有5中类型的表达式,它们是算术表达式(例2*Pi*r*r)、字符串表达式(例“欢迎您”)、日期型表达式(例#11/22/98)、关系表达式(”abc”>”abcd”)和布尔表达式(2<=4AND6>3)。

二、填空题:1.单选按钮用于建立一组多选一的选项供用户选择,即在这些选项中,用户一次只能选择其中的一个选项选项,并且必须选择其中一个选项。

同时,当一个单选钮被选中时,其他选项自动关闭。

2.列表框是以列表形式显示一系列项目和信息,用户可通过单击其中某一项来选择的自己所需项目或信息。

在Windows中,使用列表框输出数据是保证数据标准化的重要手段,它是一个重要的输出控件。

在工具栏中它是一个标着带有滚动条的列表图案的按钮。

3.MsgBox 函数用来在对话框中显示消息,等待用户单击按钮,并返回一个整数,告诉程序用户单击了哪一个按钮。

4.在VB中有三种形式的数组,静态数组、动态的数组和控件数组。

静态数组就是指数组元素的个数在程序运行时保持不变,动态数组是指数组中的元素个数在程序运行时可以变化的数组,控件数组是使用VB中某些常用控件创建的数组。

使用静态数组、动态数组前必须要先声明,才能在程序中使用。

5.VB提供了图形控件,如Shape控件和Line控件。

它们提供一定的绘图样式,虽比较简单,但是使用非常方便,不需要编写代码,只要设置相应的属性即可。

【精品】C++面向对象程序设计题库(含答案)

【精品】C++面向对象程序设计题库(含答案)

【精品】C++面向对象程序设计题库(含答案)C++面向对象程序设计试题集一、填空题(每空2分,共20分)1. 设a、b、c都是int型变量,则a=(b=4)+(c=2)后,a值为_ _,b值为。

2. 在派生类的成员中有公有成员、、、四类成员。

3. 类Sample的构造函数将形参data赋值给数据成员data。

请将类定义补充完整。

class Sample{public: Sample(int data=0);Private: int data;};Sample::Sample(int data){4. 面向对象程序设计的机制提供了重复利用程序资源的一种途径。

5. 继承发生在利用现有类派生新类时,其中现有类称为,或父类;派生的新类称为,或。

6. 若表达式(x+(y-z)*(m/n))+3中的变量均为double型,则表达式值的类型为。

7. 已知数组a 中的元素个数为n,下列语句的作用是将下标为i 的元素移动到下标为i,1 的单元,其中1?i,n。

例如,当n=4,a 中原有数据为1,2,3,4 时,则移动后a 中元素为2,3,4,4。

请将语句补充完整:for(int i=0;i<n-1;i++) a[i]= 。

8. 类是对具有共同属性和行为的一类事物的抽象描述,共同属性被描述为类中的,共同行为被描述为类中的。

9. 类Sample的构造函数将形参data赋值给数据成员data。

请将类定义补充完整。

class Sample{public:Sample(int data=0);Private:int data; };Sample::Sample(int data){}10. 实现运行时多态,要使用函数。

11. 设A为test类的对象且赋有初值,则语句test B(A); 表示。

12. 在MyClass 类的定义中,对赋值运算符=进行重载。

请将画线处缺失的部分补充完整。

MyClass::operator=(const MyClass rhs) {if(this=&rhs) return *this;value=rhs. value;return *this; }13. C++语言中的每条基本语句以 ________作为结束符,每条复合语句以________ 作为结束符。

C++面向对象程序设计复习练习试题带答案(1)

C++面向对象程序设计复习练习试题带答案(1)

C++面向对象程序设计模拟试题一一、单项选择题(本大题共10小题,每小题2分,共201.说明虚函数的关键字是()。

A. inlinevirtual C. define D. static2.在每个C++程序中都必须包含有这样一个函数,该函数的函数名为()。

A. mainB. MAINC. nameD. function 3.cout是某个类的标准对象的引用,该类是()。

A. ostream B. istream C. stdout D. stdin4.如果在类外有函数调用CPoint::func();则函数func()是类CPoint的()。

A. 私有静态成员函数B. 公有非静态成员函数C. 公有静态成员函数 B. 友元函数5. 如果class类中的所有成员在定义时都没有使用关键字public、private或protected,则所有成员缺省定义为()。

A. publicB. protectedC. private D.static6.一个类的所有对象共享的是()。

A. 私有数据成员 B. 公有数据成员 C. 保护数据成员 D. 静态数据成员7.动态联编所支持的多态性称为()。

A. 虚函数 B. 继承C. 编译时多态性D. 运行时多态性8.定义类模板时要使用关键字()。

A. const B. newC. deleteD. template9.对虚基类的定义()。

A. 不需要使用虚函数 B. 必须使用虚函数C. 必须使用privatD. 必须使用public10.类型转换函数()。

A. 不能带有参数 B. 只能带一个参数 C. 只能带2个参数D. 只能带3个参数二、判断正误题(本大题共6小题,每小题2分,共12分)1.虚函数在基类和派生类之间定义,且要求函数原型完全一致。

()2.抽象类可以用来直接创建对象。

()3.内联函数中可以出现递归语句。

()4.模板类与类模板的意义完全相同。

()5.常对象只能调用常成员函数。

面向对象程序设计习题及答案

面向对象程序设计习题及答案

面向对象程序设计一、选择填空1. 关于C + +与C语言的关系描述中,(D)是错误的。

(A)C语言是C + +的一个子集 (B) C语言与C++是兼容的(C) C++对C语言进行了一些改进(D) C++和C语言都是面向对象的2. 下面关于对象概念的描述中,(B)是错误的。

(A )对象就是C语言的结构变量(B)对象代表着正在创建的系统中的一个实体(C)对象是一个状态的操作(或方法)的封装体(D)对象之间的信息传递是通过消息进行的3. 下面关于类概念的描述中,(D)是错误的。

(A )类是抽象数据类型的实现(B )类是具有共同行为的若干对象的统一描述体(C)类是创建对象的样板(D)类就是C语言的结构类型4. 按照标识符的要求,(A )符号不能组成标识符。

(A )连接符 (B)下划线 (C)大小写字母 (D)数字字符5. 下列符号中,(C)不可作为分隔符。

(A), (B) : (C)? ( D);6. 在16位机中,int型字宽为(A)字节。

(A ) 2 ( B) 4 ( C) 6 (D) 87. 类型修饰符unsigned修饰(D)类型是错误的。

(A)char ( B) int (C) long int (D) float& 对于int *pa[5];的描述,(D)是正确的。

(A)pa是一个指向数组的指针,所指向的数组是5个int型元素(B)pa是一个指向某数组中第5个元素的指针,该元素是int变量(C)pa[5]表示某个数组的第5个元素(D)pa是一个具有5个元素的指针数组,每个元素是一个int型指针。

9. 下列关于指针的运算中,(D)是非法的。

(A)两个指针在一定条件下,可以进行相等或不等的运算。

(B)可以有一个空指针赋值给某个指针。

(C)一个指针可以加上一个整数。

(D)两个指针在一定条件下,可以相加。

10. 指针可以用来表示数组元素,下列表示中( A )是错误的。

已知:int a[3][7];(A)*(a+1)[5] ( B) *(*a+3) (C) *(*(a+1)) (D) *(&a[0][0]+2)11. 下列表示引用的方法中,(A )是正确的。

《C++语言与面向对象的设计》习题及参考解答

《C++语言与面向对象的设计》习题及参考解答

C++语言与面向对象的设计第1至13章习题参考答案习题1参考答案1 用最简练的语言解释下列词汇在面向对象程序设计中的含义:对象,类,方法,接口,消息,封装,继承,服务答:对象是客观世界中的实体在计算机中的表示。

是一组数据成员和方法成员的封装体。

是类类型的实例。

类是一种抽象数据类型。

是一组对象共性的描述。

方法是在一个类中定义的过程或函数,实现类的功能的代码。

接口是对象封装体向外部公布的一组具有公有属性的方法。

是从对象外部与对象通信的唯一途径。

消息是对象之间的通信机制,对象的客户通过接口方法调用请求对象服务称为消息调用。

对象之间通过消息传递,互相协调、配合,共同实现软件系统的整体设计目标。

消息的载体是对象提供的公有方法,即对象的接口。

封装有以下两重含义:首先,是指将描述客观实体数据特征的数据和方法特征的代码组织在一起,作为一个整体,并为该整体命名标识,以区别于其它数据和程序代码。

其次,通过对该整体内成员的访问属性的规定,使一部分成员的隐藏起来,对于封装体外成为不可见的,同时使另一部分成员对外开放,作为与外部交流的接口。

继承是面向对象程序设计方法中描述的两个类之间一种增量包含关系。

这两个类具有一种父子关系,子类通过为父类添加新的成员而创建。

继承提供了利用一个类的代码创建新类的重用方法。

继承关系也是对客观世界分类层次关系的一种模拟。

服务即对象通过公有方法向外部提供功能。

1. 2 试列举过程化、模块化、结构化等程序设计方法的主要特点。

面向对象程序设计是如何包容和吸收其它几种程序设计方法的有用成分的。

答:过程化程序设计方法以过程或函数作为程序的基本构造单位。

侧重于算法表达和过程间参数传递的组织。

模块化程序设计方法以独立编译的源程序模块作为大型应用程序的基本组织单位。

注重于应用程序的开发管理。

包括系统开发的任务分解、模块间通信管理、可重用代码库的组织、由不同语言生成的目标模块的连接等方面。

结构化等程序设计方法以单入口单出口的可嵌套基本控制结构作为程序构造单位。

c++第2章类和对象习题

c++第2章类和对象习题

c++第2章类和对象习题《面向对象程序设计》习题班级:学号:姓名:名单序号:成绩:第2章类与对象一、选择题(共26分,每题1分)1.下列有关类的说法不正确的是()。

A.对象是类的一个实例B.任何一个对象只能属于一个具体的类C.一个类只能有一个对象D.类与对象的关系和数据类型与变量的关系相似2.下面()项是对构造函数和析构函数的正确定义。

A.void X::X(), void X::~X()B.X::X(参数), X::~X()C.X::X(参数), X::~X(参数)D.void X::X(参数), void X::~X(参数)3.()的功能是对象进行初始化。

A.析构函数 B.数据成员 C.构造函数 D.静态成员函数4.下列表达方式正确的是()。

A.class P{ B. class P{public:public:intx=15;int x;void show(){cout<<<x;}<="">};}C. class P{ D. class P{int f; public:};int a;f=25; void Seta (int x) {a=x;}};5.拷贝构造函数具有的下列特点中,()是错误的。

A.如果一个类中没有定义拷贝构造函数时,系统将自动生成一个默认的B.拷贝构造函数只有一个参数,并且是该类对象的引用C.拷贝构造函数是一种成员函数D.拷贝构造函数的名字不能用类名6.关于静态成员的描述中,()是错误的。

A.静态成员可分为静态数据成员和静态成员函数B.静态数据成员定义后必须在类体内进行初始化C.静态数据成员初始化不使用其构造函数D.静态数据成员函数中不能直接引用非静态成员7.关于友元的描述中,()是错误的。

A.友元函数是成员函数,它被说明在类体内B.友元函数可直接访问类中的私有成员C.友元函数破坏封装性,使用时尽量少用D.友元类中的所有成员函数都是友元函数8.对类的构造函数和析构函数描述正确的是()。

c 面向对象程序设计教程习题答案

c 面向对象程序设计教程习题答案

c 面向对象程序设计教程习题答案C面向对象程序设计教程习题答案在学习C面向对象程序设计的过程中,习题答案是非常重要的一部分。

通过练习习题,可以加深对知识点的理解,提高编程能力。

下面我们就来看一些常见的C面向对象程序设计习题及其答案。

1. 什么是面向对象程序设计?面向对象程序设计是一种程序设计范式,它以对象为中心,通过封装、继承和多态等特性来组织和管理代码。

面向对象程序设计可以提高代码的可维护性和可重用性,是现代软件开发中非常重要的一部分。

2. 什么是类和对象?类是一种抽象的数据类型,它描述了一类对象的共同特征和行为。

对象是类的实例,它具体描述了一个具体的实体。

在C面向对象程序设计中,类和对象是非常重要的概念。

3. 请编写一个简单的类和对象的例子。

```c#include <stdio.h>// 定义一个简单的类class Person {public:int age;char name[20];void display() {printf("Name: %s, Age: %d\n", name, age);}};int main() {// 创建一个对象Person p;p.age = 25;strcpy(, "Alice");p.display();return 0;}```4. 什么是封装?封装是面向对象程序设计中的一种重要特性,它将数据和行为封装在一个类中,对外部隐藏了内部的实现细节。

封装可以保护数据的安全性,同时提供了简单的接口供外部访问。

5. 请编写一个简单的封装例子。

```c#include <stdio.h>// 定义一个简单的类class Circle {private:double radius;public:void setRadius(double r) {radius = r;}double getArea() {return 3.14 * radius * radius;}};int main() {// 创建一个对象Circle c;c.setRadius(5.0);printf("Area: %f\n", c.getArea());return 0;}```以上就是一些常见的C面向对象程序设计习题及其答案。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

类和对象(一)
知识点:
1.类与对象的概念,及两者的关系?
2.类定义的格式,对象定义的格式,访问对象的成员的格式
3.类中成员访问权限有哪几种,它们的特点?
4.如何对对象进行初始化?
5.构造函数与析构函数的特点,构造函数在哪些情况下被系统自动调用,析构函数什么情况下被调用;存在虚基类的派生类构造函数调用顺序?
6.缺省构造函数的特点
7.拷贝构造函数的功能与特点
8.成员函数与内联函数的区别
9.静态成员的概念与作用
10.静态成员函数调用格式
11.什么是友元,友元的作用
12.作用域运算符的功能是什么?它的使用格式如何?
13.满足成员函数重载的条件
练习题1
一、选择填空
1.在下列关键字中,用以说明类中公有成员的是( )。

A .public;B.private;C.protected;D.friend。

2.下列的各类函数中,( )不是类的成员函数。

A.构造函数;B.析构函数;C.友元函数;D.拷贝初始化构造函数。

3.作用域运算符的功能是( )。

A.标识作用域的级别的;
B.指出作用域的范围的;
C.给出作用域的大小的;
D.标识某个成员是属于哪个类的。

4.( )是不可以作为该类的成员的。

A.自身类对象的指针;
B.自身类的对象;
C.自身类对象的引用;
D.另一个类的对象。

5.( )不是构造函数的特征。

A.构造函数的函数名与类名相同;
B.构造函数可以重载;
C.构造函数可以重载设置缺省参数;
D.构造函数必须指定类型说明。

6.( )是析构函数的特征。

A.一个类中能定义一个析构函数;
B.析构函数名与类名不同;
C.析构函数的定义只能在类体内;
D.析构函数可以有一个或多个参数。

7.通常的拷贝初始化构造的参数是( )。

A.某个对象名;
B.某个对象的成员名;
C.某个对象的引用名;
D.某个对象的指针名。

8.关于成员函数特征的下述描述中,( )是错误的。

A.成员函数一定是内联函数;
B.成员函数可以重载;
C.成员函数可以设置参数的缺省值;
D.成员函数可以是静态的。

9.下述静态数据成员的特性,( )是错误的。

A.说明静态数据成员是前面要加修饰符STA TIC;
B.静态数据成员要类外进行初始化;
C.引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符;
D.静态数据成员不是所有对象所公有的。

10.友元的作用( )。

A.提高程序的运用效率;
B.加强类的封装性;
C.实现数据的隐藏性;
D.增强成员函数的种类。

二、判断下列描述的正确性,对者打√,错者划×。

1.使用关键字class定义的类中缺省的访问权限是私有(private)的。

2.作用域运算符( ::)只能用来限定成员函数所属的类。

3.析构函数是一种函数体为空的成员函数。

4.析构函数和构造函数都不能重载。

5.说明或定义对象时,类名前面不需要加class关键字。

6.对象成员的表示与结构变量成员表示相同,使用运算符.或—>。

7.所谓私有成员是指只有类中所提供的成员函数才能直接使用它们,任何类以外的函数对它们的访问都是非法的。

8.某类中的友元类的所有成员函数可以存取或修改该类中的私有成员。

9.可以在类的构造函数中对静态数据成员进行初始化。

10.如果一个成员函数只存取一个类的静态数据成员,则可将该成员函数说明为静态成员函数。

三、分析下列程序的输出结果。

1.
#include<iostream>
class A
{
public:
A( );
A(int i,int j);
void print( );
private:
int a,b;
};
A::A()
{
a=b=0;
cout<<"Default constructor called.\n"; }
A::A(int i,int j)
{
a=i;
b=j;
cout<<" Constructor called.\n";
}
void A::print( )
{
cout<<"a="<<a<<",b="<<b<<endl; }
void main()
{
A m,n(4,8);
m.print();
n.print();
}
2.
#include<iostream.h>
class Count
{
public:
Count () { count++; }
static int HM() { return count; }
~Count( ) { count--; }
private:
static int count;
};
int Count::count=100;
void mian()
{
Count c1,c2,c3,c4;
Cout<<Count::HM()<<endl;
}
四、按下列要求编写程序。

在一个程序中,实现如下要求:
(1)构造函数重载;
(2)成员函数设置缺省参数;
(3)有一个友元函数;
(4)有一个静态函数;
(5)使用不同的构造函数创建不同对象。

类和对象(二)
练习题2
1.指向对象的指针如何定义
2.对象指针作函数参数与对象作函数参数有何不同?
3.什么是this指针?它有何作用?
4.什么是对象数组?他如何定义?它如何赋值?
5.指向对象数组的指针如何定义?如何赋值?
6.使用new和delete创建和删除动态数组的格式如何?
7.C++中类型的自动隐式转换有哪些规则?
8.构造函数都具有类型转换函数的功能吗?
9.什么是转换函数?定义时应注意哪些问题?
作业题
一、选择填空
1.已知:类A中一个成员函数说明如下:
void Set(A &a);
其中,A &a的含义是()
A.指向类A的指针为a;
B.将a的地址值赋给变量Set;
C.a是类A的对象引用,用来作函数Set()的形参;
D.变量A与a按位相与作为函数Set()的参数。

2.下列关于对象数组的描述中,()是错的。

A.对象数组的下标是从0开始的;
B.对象数组的数组名是一个常量指针;
C.对象数组的每个元素是同一个类的对象;
D.对象数组只能赋初值,不能被赋值。

3.下列定义中,()是定义指向数组的指针 p.
A.int *p[5];
B.int (*p)[5];
C.(int *)p[5];
D.int *p[]。

4.关于new 运算符的下列描述中,( )是错误的。

A.它可以用来动态创建对象的对象数组;
B.使用它创建的对象或对象数组可以使用运算符delete删除;
C.使用它创建对象时要调用构造函数;
D.使用它创建对象数组时必须指定初始值。

5.关于delete运算符的下列描述中,( )是错误的。

A.它必须用于new返回的指针;
B.它也试用于空指针;
C.对一个指针可以使用多次该运算符;
D.指针名前只用一对方括号符,不管所删除数组的维数。

6.具有转换函数动能的构造函数,应该是( )。

A.不带参数的构造函数;
B.带有一个参数的构造函数;
C.带有两个以上参数的构造函数;
D.缺省构造函数。

二、判断下列描述是否正确,对者划√,错者划×。

1.指向对象的指针和指向类的成员的指针在表示形式上是不相同的。

2.已知:m是类A的对象,n是类A的公有数据成员,p是指向类A中n成员的指针。

下列两种表示是等价的:
m.n和m .*p
3.指向对象的指针与对象都可以作函数参数,但是使用前者比后者好些。

4.对象引用作函数参数比用对象更方便些。

5.对象数组的元素可以是不同类的对象。

6.对象数组既可以赋初值又可以被赋值。

7.指向数组的指针不一定必须指向数组的首元素。

8.转换函数不是成员函数,它是用来进行强制类型转换的。

相关文档
最新文档