面向对象程序设计作业
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
public:
Time();
Time(int h,int m,int s)
{hour=h,minute=m,second=s;}
void show()
{cout<<"Time
is"<<hour<<":"<<minute<<":"
<<second<<endl;}
};
试重载运算符+,当加上一个整数(秒)时,输出新的时间。例
返回类型,且访问控制属性为 ,当其参数为
时,称之为
拷贝构造函数。
2、已经定义好了一个类student,现在要定义一个类pupil,它是从
student私有派生而来,那么,定义pupil类的写法是
。
3、由于不能直接对一个类的二个对象做加法,因此,必须对+进行
,这主要由名为 +(参数表)的函数完成。
4、动态内存分配采用 语句,释放这种方式分配的内存空间则用
执行? 9、 什么是友元函数?使用它有什么好处? 10、 什么情况下需要预约存贮空间?试解释下列程序每一语句的含
义。 float *p; p=new float[10]; for( int i=0;i<=9;i++,p++)*p=i; 11、如果要释放上一题中指针p所指的空间,应如何操作? 2、 程序设计题
A(int i){a=i;cout<<"A’s con."<<endl;}
~A(){cout<<"A’s des."<<endl;}
void print() {cout<<a<<endl;}
int geta(){ return a;}
private:
int a;
};
class C
{
public:
C(){c=0;cout<<"C::default con."<<endl;}
A. pa是一个指向数组的指针,所指向的数组是5个int型元
素;
B. pa是一个指向某数组中第5个元素的指针,该元素是int型
变量;
C. pa是一个具有5个元素的指针数组,每个元素是一个int型
指针;
D. pa[5]表示某个数组的第5个元素的值。
10. 下面程序使用new与delete命令:
#include <iostream.h>
1. 用于类中虚成员函数说明的关键字是( ) A. public B. virtual C. protected D. private 3.下面是关于静态成员的说法,其中不正确的是( )。
A. 静态成员有类作用域,但与普通非静态成员有所不同 B. 静态函数没有this指针,同一个类的不同对象拥有相同的静态
1: #include <iostream.h>
2: class exam{
3: int i;
4: public :
5: exam(int n){i=n;cout<<"constructing...\n";}
6: ~exam(){cout<<"destructing...\n";}
7: int get_i(){return i;}
如:
Time s(12,34,16),s1;
s1=s+100;//从12点34分16秒后,再过100秒,即加100秒
s1.show();
第三次作业
1、 选择题(在A、B、C、D四个答案中选择一个正确的填入后面 的括号中)
1.下面( )是对类ttt的声明。 A. void class ttt; B. class int ttt; C. class ttt( ); D. class ttt;
情况下拷贝构造函数被执行?
8、什么是this指针?它的主要作用是什么?
2、 判断题
1、定义一个整型指针p,在内存中预约10个连续单元,p指向这10个
单元之首,可以使用以下语句操作。( )
int *p=new int (10);
2、如果定义 char *const name="yang",则可执行name=new
数据成员 C. 静态数据成员的初始化必须在类外进行 D. 静态函数同样可以访问非静态数据成员 4. 下面的说法中,不正确的一句是( )。 A.类的友元函数是类的特殊成员函数,它对所有的类成员、保护成 员和私有成员享有完全访问特权。 B. 一个类的友元类中的成员函数都是这个类的友元函数 C. 适用于类成员函数和数据的访问控制同样适用于枚举和嵌套类 D. 与结构类似,类也可以互相嵌套,适用于嵌套结构的规则也适用 于嵌套类
delete p;
return 0;
}
下面是对这段程序的叙述,其中正确的是()。
A. 有错误,编译不能通过 A. 正确,执行结果为:1000 1000 B. 正确,但执行结果的第二个数值不定 C. 正确,执行结果的各个数值均不为1000
2、 判断下列描述正确性,对者划√,错者划×(每小题2 分)。
5. ( )语言是面向对象的语言。
A. C B. Pascal C. Fortran D. C++
6. C++风格的源文件包含的输入输出头文件为()
A. stdio.h B. stdafx.h C. iostream.h D. stream.h
7. 与C语言printf(“Hello word\n”) ;语句功能相同的C++语句是()
{
public: B(){b=0;cout<<"B::default con."<<endl;} B(int i,int j,int k,int l,int n):A(i),C(j),cc(k),aa(l),b(n)
{cout<<"B’s con."<<endl;} ~B(){cout<<"B’s des."<<endl;} void print()
{A::print(); C::print(); cout<<b<<","<<aa.geta()<<endl; cout<<cc.getc()<<endl; } private: int b; C cc; A aa; }; void main() {
B bb(1,2,3,4,5); bb.print(); } 5、 程序设计题 1、应用 C++的多态性,计算三角形、矩形和圆的面积。建议公共基类 命名为Figure,含有二个数据成员及纯虚函数,形式如下: Class Figure{ protected: float x,y; public: Figure(float a,float b){x=a,y=b;} virtual void show_area()=0; }; 三角形类、矩形类和圆类命名分别为Tri 、Rec 、Cir,并在主函数中 写出一个调用的例子,三角形对象、矩形对象和圆对象的初始数据为 (3,4,5)、(2,4),(10)。最后请写出你的程序运行结果。 2、编写程序,设计一个时间类Time,它的基本定义如下: class Time{ int hour,minute,second;
语句。
5、在C++中,单行注释或行尾注释通常采用
进行。
4、 综合分析题
1、 分析下列程序中继承的关系。(3分)
2、 指明构造函数和析构函数执行顺序。(5分)
3、 写出程序的运行结果。(7分)
#include "iostream.h"
class A
{
public:
A(){a=0;cout<<"A::default con."<<endl;}
18: }
(1) 第1行能省略吗?为什么?
(2) 第4行的public :是什么含义?
(3) 第5行、第6行分别定义的是什么函数?它们在什么情况下执
行?
(4) 第7行和第9-12行定义的函数中,哪一个是普通的自定义函数?哪一
个是类exam的成员函数?
(5) 第15行的含义是什么?
(6) 试写出该程序的运行结果。
8:
};
9: int sqr_it(exam s)
10: {
11: return s.get_i()*s.get_i();
12: }
13: void main()
14: {
15:
exam x(11);
16:
cout<<x.get_i()<<endl;
17:
cout<<sqr_it(x)<<endl;
C++程序设计
第一次作业
1、 问答题 1、 什么是面向对象程序设计?面向对象程序设计的优点是什么? 2、 什么是类?什么是对象?它们之间关系如何? 3、 C++的主要特点有哪些? 4、 什么叫函数重载?什么叫运算符重载?请书写一个函数重载的
程序例子,分别计算圆、矩形、三角形的图形面积。 5、 使用内联函数的优点是什么?如何将函数说明为内联函数? 6、 构造函数和析构函数的主要特点各是什么? 7、 什么是this指针?它的主要作用是什么? 8、 什么是拷贝构造函数?在哪三种情形下会触发拷贝构造函数的
A. cout>>”Hello word\n”
B. cin>>” Hello word\n”
C. cout<<” Hello word\n”
D. cin<<” Hello word\n”
8. 在下面几个元素中,不是面向对象的要素的是( );
A. 重载 B. 对象 C. 类
D. 继承
9. 对于int *pa[5];的描述,下面叙述正确的是( );
char[4]; ( )
3、从一个类定义的各个不同的具体对象,其结构不相同。( )
4、类的构造函数可以用public、private或protected中任一访问属性说
明。( )
5、重载运算符既可改变其执行功能,又可改变它的基本语法形式。
()
6、利用模板可以大幅度地节约程序代码。( )
7、引入虚基类的好处是防止最派生类对继承成员的二义性。(
)
8、虚函数的定义在基类中进行,此虚函数就可以在一个或多个派生
类中被重新定义,但函数的返回类型、函数名、形参个数和类型必
须相同。( )
9、当某个函数以对象为参数时,调用这个函数必定会执行类的拷贝
构造函数。( )
10、 在可以重载的运算符中,并不是都可使用友元函数进行重载
的。( )
3、 填空题
1、构造函数的名字必须与 相同,可以有任意类型的形参,但
(3) 有一个向量类vector,包括一个点的坐标位置x和y,设计 二个友元函数,实现两个向量的加法和减法运算。
(4) 编写一个程序,设计一个类score,用于统计一个班的学 生成绩,其中使用一个静态数据成员sumfs存储总分和一 个静态成员函数rsumf()返回该总分。
3、 分析题
请仔细阅读下列程序,回答问题。
(1) 建立一个三角形类tri,有三个私有数据a,b,c,设计一 个缺省的3参数构造函数,缺省值分别为3,3,3,再设 计一个成员函数showarea,当参数能组成三角形时输出 面积值,否则输出-1。
(2) 建立一个类book,有二个私有的数据成员qu和price,建 立一个有5个元素的数组对象,将qu初始化为1,2,3, 4,5,将price初始化为qu的10倍,并设计一个成员函数 disp,输出每个对象的qu*pricer的值。
1. C++中标识符内的大小写字母是没有区别的。 2. 宏定义命令是分号结束的。 3. C++的程序中,对变量一定要先说明再使用,说明只要在使用
main( )
{
long *p , i;
p=new long;
if(!p) {
wenku.baidu.com
cout<<”Allocation error\n”;
return 1;
}
*p=1000;
i=(long)p;
cout<<”Here is integer at p:”<<*p<<”\n”;
cout<<”Here is i: “<<i<<”\n”;
2、 什么叫函数重载和运算符重载?使用重载有何优点?
3、 何谓内联函数?采用内联函数有何好处?
4、 构造函数和析构函数的主要作用是什么?
5、 类成员的访问控制属性有哪三种?我们在外部只能访问具备
有哪一种属性的对象成员?
6、 在什么情况下应当采用成员初始化列表方式传递数据?
7、 拷贝构造函数的参数与一般的构造函数有何不同?在哪三种
(7) 如果将9-12行改为如下内容:
9: int sqr_it(exam *s)
10: {
11: return s->get_i()*s->get_i();
12: }
并将第17行改为
17:
cout<<sqr_it(&x)<<endl;
请写出此时该程序的运行结果。
第二次作业
1、 简答题
1、 什么是类?什么是对象?
C(int i){c=i;cout<<"C’s con."<<endl;}
~C(){cout<<"C’s des. "<<endl;}
void print() {cout<<c<<endl;}
int getc(){return c;}
private:
int c;
};
class B:public A,public C