1、c+复习1、#include using namespace std;class MyClass public: MyClass(int i=0)cout1;MyClass(const MyClass&x)cout2;MyClass& operator=(const MyClass&x)cout3; return*this; MyClass()cout4;int main()MyClass obj1(1),obj2(2),obj3(obj1); return 0;问输出结果:1 1 2 4 4 42、#include#includeusing namespace std;class MyStr
2、ingpublic: char str80; MyString(const char*s) strcpy(str,s); MyString&operator+=(MyString a) strcat(str,a.str); return*this; ;ostream&operator(ostream&s,const MyString&z) return s z.str; int main() MyString x(abc),y(cde); cout(x+=y)endl; return 0;问输出结果:abccde3、有类定义如下: #include iostream.hclass Type p
3、ublic:Type (int i=0);Type operator-(int);friend Type operator +(Type, Type);private:int val;若有对象定义Type cl;则下列语句序列中,错误的是 cA)Type(3)+c1; B) c1+Type(3); C) 3-c1; D) c1-3;4、#includeusing namespace std;class Bookpublic:Book(char* t=)strcpy(title,t);-virtual _char *Category()const=0;-private:char title40;
4、class Novel:public Bookpublic:Novel(char *t=):Book(t)char *Category()const return 文学 ; ;int main()Book *pb;pb=new Novel();coutCategory();return 0;5有如下程序: #include using namespace std; class Media public: void Name(); void Show(); protected: int page; ; class Book:private Media public: void Print() c
5、outpageendl; void Show() Media:Show(); / ; int main() Book Bible; Bible.Name(); / Bible.Print(); / Bible.Show(); / return 0; 编译不正确的是:(2)6、有如下程序段int i =0, j=1;int &r=i ; / r =j; /int*p=&i ; /*p=&r ; / / 将*去掉或者将&去掉其中编译正确的语句是1237、下面程序的语句1-4有误,找出不正确的语句并修改有如下程序:#includeusing namespace std;class MyClass p
6、ublic:MyClass(int x):val(x)void Set(int x) val=x; void Print() const coutval=valt; private: int val; ;Int main()const MyClass obj1(10);-MyClass obj2(20);obj1.Print(); /语句 1obj2.Print(); /语句 2obj1.Set(20); /语句 3 / 将此句删除 obj1为常量obj2.Set(30); /语句 4return 0;8、有如下程序:#include using namespace std;class Toy
7、 public: Toy(char* _n) strcpy (name,_n); count+;Toy() count-; char* GetName() return name; static int getCount() return count; 静态成员属于类private:char name10;static int count;int Toy:count=0;int main()Toy t1(Snoopy),t2(Mickey),t3(Barbie);coutt1.getCount()endl;/ = toy:getcount();return 0;/输出3 9、如果不使用多态机制
8、,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员,有如下程序,没有使用多态机制。#includeusing namespace std;class Baseint a,b;public:Base(int x ,int y) a=x; b=y;void show() couta,bendl;class Derived:public Base int c ,d;public:Derived(int x,int y,int z,int m):Base(x,y)c=z; d=m;void show() coutc,dshow();return 0;/ 输出 10 20 10.若
9、有如下类声明#include iostream.hclass MyClass public:MyClass() cout1; 执行下列语句MyClass a,b2,*p2; 以后,程序的输出结果 1 1 111、下列语句中不正确的是(AC)。A)const int a; B)const int a=10;C)const int*point=10; D)const int*point=new int(10);12、在C+中既可以用于文件输入又可以用于文件输出的流类是 AA)fstream B)ifstream C)ofstream D)iostream13、有如下程序:#includeusing
10、 namespace std;class Apublic: A()coutA; A()coutC;class B:public Apublic: B( )coutG; B( )coutT;int main() B obj; return 0;运行这个程序的输出结果是 AGTC14、有如下程序: #include using namespace std; class Boat; class Car public: Car(int i):weight(i) friend int Total(const Car &c,const Boat &b); / private: int weight; ;
11、class Boat public: Boat(int i):weight(i) friend int Total(const Car &c,const Boat &b); private: int weight; ; int Total(const Car &c,const Boat &b) / return c.weight+b.weight; int main() Car c(10); Boat b(8); coutThe total weight isTotal(c,b)endl; / return 0;15若需要为XV类重载乘法运算符,运算结果为XV类型,在将其声明为类的成员函数时,
12、下列原型声明正确的是 D A)XV operator *(XV,XV); B)XV *(XV); C)operator *(XV); D)XV operator *(XV);16有如下程序: #includeusing namespace std;class Instrumentpublic:virtual void Display()=0;class Piano:public Instrumentpublic:void Display()/*函数体程序略*/;int main() Instrument s;Instrument *p=0;/;return 0;下列叙述中正确的是 BA)语句“
13、Insturment *p=0;”编译时出错B)语句“Instrument s;”编译时出错C)类Piano中的Display函数不是虚函数D)类Instrumen类是一个虚基类17、已知类IMS中两个成员函数的声明为void listen() const;与void speak();,另有两个对象的定义为IMS obj1;与const IMS obj2;,则下列语句中,产生编译错误的是 BA)obj1.listen(); B)obj1.speak(); C)obj2.listen(); D)obj2.speak();17、若在表达式y/x中,“”是作为成员函数重载的运算符,则该表达式还可以表
14、示为CA)x.Operator/(y) B)operator/(x,y)C)y.operator/(x) D)operator/(y,x)18、有函数模板声明和一些变量定义如下:template T1 sum(T2,T3);double d1,d2;则下列调用中,错误的是 DA)sumdouble,double,double(d1,d2);B)sum(d1,d2);C)sum(d1,d2);D)sum(d1,d2);/ 没有参数指明T1的类型19、 有如下类定义class A char *a;public:A():a(0) A(char *aa) /把aa所指字符串拷贝到a所指向的存储空间a=
15、 _ new charstrlen(aa)+1;_ ;strcpy(a,aa);A() delete a; 横线处应填写的表达式是20、有如下程序:#includeusing namespace std;class test private:int a;public:test ( ) coutconstructorendl; test(int a)coutaendl;test(const test &_test)a=_test.a;coutcopy constructorendl;test() coutdestructorendl; ;int main()test A(3);return 0;
16、 运行时输出的结果是 3 destructor21、下列运算符重载函数中,属于类 Value 的成员函数的是(ACD)。A)Value operator+(Value); B)Value operator-(Value, Value);C)Value operator*(int);D)Value operator/(Value); 22、下列函数模板的定义中,不合法的是CDA) template T abs(T x) return x 0 ? -x: x;B)template T abs(T x)return x0 ?-x:x;C)template T abs(T x)return x0 ?-
17、x:x;D)template T abs(T x)returm x0 ?-x:x;23、有如下程序:#includeusing namespace std;class point public:static int number;public:point() number+; point() number-; ;int point:number=0;void main()point *ptr;point A,B;point *ptr_point=new point3;ptr=ptr_point;point C;coutpoint:numberendl;deleteptr;运行时输出的结果是 6
18、24、下列函数原型声明中,正确的是 ABDA)int fnction(int m,int n);B)int function(int,int);C)int function(int m=3,int n);D)int function(int &m,int &n);25、若有函数模板mySwap和一些变量定义如下: template void mySwap(T X,T Y); double d1,d2; int i1,i2; 下列对mySwap的调用中,正确的是 ABD A)mySwap(i1,i2) B)mySwap(d1,d2)C)mySwap(i1,d1) D)mySwap(i2,d2)2
19、6、下列程序的输出是3,请填充程序中的空缺,使该行形成一个运算符重载函数的定义。#includeusing namespace std;class MyNumberint n;public:MyNumber(int k):n(k)-operator- int( )const return n;int main()MyNumber num1(3);coutint(num1);return 0;27、有如下程序:/ 没有错误#include#includeusing std:cout;class Pointpublic:friend double distance(const Point &p);
20、 /p距原点的距离Point(int xx=0,int yy=0):x (xx),Y(yy) / 改为point(int xx,int yy):x(XX),y(YY)private:int x,Y;double distance(const Point &p) /return sqrt(p.x*p.x+p.Y*p.Y);int main()Point p1(3,4);coutdisp(); a-disp(); *found(3)* b-disp(); 普通对象 b.disp(); 30、请将下列模板类Data补充完整。template class Datapublic:void put (T
21、v) val=v; _T_ get() /返回数据成员val的值,返回类型不加转换 return val; private:T val; 31、根据程序中的注释将下列缺失部分补充完整。#include iostream.hclass Pointint x, y; /点的x和y坐标public:Point(int xx=0,int yy=0):x(xx),y(yy) ;class CirclePoint center; /圆心位置Int radius; /半径public: /利用cx和cy分别初始化圆心的x和y坐标-Circle(int cx,int cy,int r):center(cx,c
22、y)-,radius(r) void area() cout3.14159*radius*radiusendl; ;32、下列程序的输出结果是_0 4 2_。#include using namespace std;class Test public: Test() cnt+; Test() cnt-; static int Count() return cnt;private: static int cnt;int Test:cnt = 0;int main() cout Test:Count() ; Test tl, t2; Test* pT3 = new Test; Test* pT4
23、= new Test; cout Test:Count() ; delete pT4; delete pT3; cout Test:Count() endl;return 0;33、使用VC6打开工程test4_2。此工程包含一个源程序文件test4_2.cpp,其对一个学校的教师和考生情况进行了描述。由于教师和考生之间有相同的信息,如姓名、年龄等,所以可抽象出一个基类person,考生类student和教师类teacher作为person类的派生类。请按要求完成下列操作,将程序中的类定义补充完整。 (1)定义基类person的私有数据成员name和age,分别用于表示姓名和年龄,name为字
24、符指针,age为血型的数据。请在注释“/*1*”之后添加适当的语句。(2分) (2)完成基类person的重载构造函数person(char *n,int a)的定义,把数据成员name,age分别初始化为参数n,a的值,请在注释“/*2*”之后添加适当的语句。 (2分) (3)根据主函数main中对s1的声明,定义派生类student的构造函数。在注释“/*3*”之后添加适当的语句。(3分) (4)完成派生类teacher成员函数void setinf(ehar *n,int a,char *d,char *1)的定义,其功能为记录教师的姓名、年龄、院,系与职称信息。请在注释“/*4*”之后添加适当的语句。 (2分) 输出结果如下:刘雷(45)destructor 蒋军(23)destructor #includeiostream.h #include class person /*1*
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1