C复习提纲(含代码1).doc

上传人:自*** 文档编号:126234705 上传时间:2020-03-23 格式:DOC 页数:36 大小:91KB
返回 下载 相关 举报
C复习提纲(含代码1).doc_第1页
第1页 / 共36页
C复习提纲(含代码1).doc_第2页
第2页 / 共36页
C复习提纲(含代码1).doc_第3页
第3页 / 共36页
C复习提纲(含代码1).doc_第4页
第4页 / 共36页
C复习提纲(含代码1).doc_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《C复习提纲(含代码1).doc》由会员分享,可在线阅读,更多相关《C复习提纲(含代码1).doc(36页珍藏版)》请在金锄头文库上搜索。

1、11、有以下类定义class MyClasspublic:MyClass()cout1;则执行语句MyClass a,b2,*p2;后,程序的输出结果是_。 A:11 B:111 C:1111 D:11111答案:B等级:1 难度:112、关于友元,下列说法错误的是_。 A:如果类A是类B的友元,那么类B也是类A的友元 B:如果函数fun()被说明为类A的友元,那么在fun()中可以访问类A的私有成员 C:友元关系不能被继承 D:如果类A是类B的友元,那么类A的所有成员函数都是类B的友元答案:A等级:2 难度:213、关于动态存储分配,下列说法正确的是_。Tdate *p;P=new Tdat

2、e2Delete p A:new和delete是C+语言中专门用于动态内存分配和释放的函数 B:动态分配的内存空间也可以被初始化 C:当系统内存不够时,会自动回收不再使用的内存单元,因此程序中不必用delete 释放内存空间 D:当动态分配内存失败时,系统会立刻崩溃,因此一定要慎用new答案:B等级:1 难度:114、有以下程序#includeusing namespace std;class MyClasspublic:MyClass(int n)number=n;/ 拷贝构造函数MyClass(MyClass& other)number=other.number;MyClass() pri

3、vate: int number;MyClass fun(MyClass p) MyClass temp(p); return temp;int main() MyClass obj1(10),obj2(0); MyClass obj3(obj1); obj2=fun(obj3); return 0;程序执行时,MyClass类的拷贝构造函数被调用的次数是_。 A:5 B:4 C:3 D:2答案:B等级:2 难度:215、在公有派生的情况下,派生类中定义的成员函数只能访问原基类的_。 A:公有成员和私有成员 B:私有成员和保护成员 C:公有成员和保护成员 D:私有成员、保护成员和公有成员答案:

4、C等级:2 难度:216、在C+中用来实现运行时多态性的是_。 A:重载函数 B:析构函数 C:构造函数 D:虚函数答案:D等级:2 难度:217、一个类可以同时继承多个类,称为多继承。下列关于多继承和虚基类的表述中,错误的是_。 A:每个派生类的构造函数都要为虚基类构造函数提供实参 B:多继承时有可能出现对基类成员访问的二义性问题 C:使用虚基类可以解决二义性问题并实现运行时的多态性 D:建立最远派生类对象时,虚基类的构造函数会首先被调用答案:C等级:2 难度:218、在一个类体的下列声明中,正确的纯虚函数声明是_。 A:virtual void vf()=0; B:void vf(int)

5、=0; C:virtual int vf(int); D:virtual void vf(int)答案:A等级:2 难度:219、在下面的运算符重载函数的原型中,错误的是_。 A:Volume operator-(double,double); B:double Volume:operator-(double); C:Volume Volume:operator-(Volume); D:Volume operator-(Volume,Volume);答案:A等级:2 难度:220、下列是模板声明的开始部分,其中正确的是_。 A:template B:template C:template D:

6、template答案:C等级:2 难度:2第11章第12章 类与对象(构造函数、析构函数)1. 日期类2. 时间类3. 学生类 日期类:(数据成员,输出日期,判断是否是闰年,加1后的日期,某年某月某日是这一年的第几天)/判断是否是闰年,并输出日期(年/月/日)/tdate.hclass Tdateprivate:int month;int day;int year;public:void Set(int,int,int);/void IsLeapYear();int IsLeapYear(); void Print();/tdate.cpp#include#includetdate.hvoid

7、 Tdate:Set(int m,int d,int y)month=m;day=d;year=y;/*void Tdate:IsLeapYear() if(year%4=0&year%100!=0)|(year%400=0)cout是闰年endl;elsecout不是闰年endl;*/int Tdate:IsLeapYear() return (year%4=0&year%100!=0)|(year%400=0);void Tdate:Print()cout(month10?0:)month/(day10?0:)day/yearendl;void main()Tdate tt;tt.Set(

8、3,5,2013);/tt.IsLeapYear();couttt.IsLeapYear()endl;tt.Print();/加一天后的日期#includeclass Dateprivate:int year,month,day;public:void SetDate(int y,int m,int d);/函数的声明语句int IsLeapYear();void Print();void AddOneday();void Date:SetDate(int y,int m,int d)/函数的声明语句year=y;month=m;day=d;int Date:IsLeapYear()retur

9、n (year%4=0&year%100!=0)|(year%400=0);void Date:Print()cout加一天之前的日期是:day/month/year=1&day=27)day+;else if(day=28)if(month=2&IsLeapYear()=1)day+;else if(month=2&IsLeapYear()=0)month+;day=1;elseday+;else if(day=29)if(month=2)day=1;month+;else if(day=30)switch(month)case 1:case 3:case 5:case 7:case 8:c

10、ase 10:day+;break;case 12:day+;break;case 4:case 6:case 9:case 11:month+;day=1;break;else if(day=31) if(month=12)year+;month=1;day=1;else month+;day=1;cout加一天以后的日期是:day/month/yearendl;void main()Date dd;dd.SetDate(2013,10,31);dd.IsLeapYear();dd.Print();dd.AddOneday();时间类:(实验指导书156页,(4),条件限制,输出时间(24,

11、12小时制)/时间类重载为成员函数#includeclass Timepublic:Time()hours=0;minutes=0;seconds=0;Time(int h,int m,int s)hours=h;minutes=m;seconds=s;Time operator +(Time&);void gettime();private:int hours,minutes,seconds;Time Time:operator +(Time& time)int h,m,s;s=time.seconds+seconds;m=time.minutes+minutes+s/60;h=time.hours+hours+m/60;Time result(h,m%60,s%60);return result;void Time:gettime()couthours:minutes:secondsendl;void ma

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号