当前位置:
文档之家› 《类与对象》课后习题(含答案)
《类与对象》课后习题(含答案)
问题一:程序执行结果是
问题二:本程序中,y、z 是 class Test{ public: static int Data; }; int Test::Data=100; //A void main(void) { Test t1,t2; t1.Data=200; t2.Data=300; //B //C
2、写出程序的输出结果。 #include <iostream> #include <cstring> using namespace std; class SomeClass { int One , Two; public: SomeClass(int a = 1, int b = 1) { One = a; Two = b; cout << "Structor" << endl; } SomeClass(SomeClass &obj) { { cout<<NumA<<'\t'<<"is Destructor."<<endl; } }; int main() { MyTestClass Myclass1(5), Myclass2.Print(); return 0; } 程序的运行结果为: Myclass2(Myclass1);
,第二行是
A.show( ); } 15 10 三、程序填空题
B.show( );
1、完成如下的类,在横线中填写合适的内容。 #include <iostream> #include <cstring> using namespace std; enum Esex{mid , man , woman};//枚举请自学 2.7 class Person { int Num; //编号 char Name[12]; //姓名 Esex Sex; //性别 float Weight; //体重 public: Person(int , char * , Esex , float); Person(); ~Person() {} void PrintInfo(); int Workdays(); }; Person::Person( { Num = id; int id ,char *name , Esex s , float w)
A类
的对象,它们的访问权属于
私有
5、分析下面程序,写出程序的运行结果。
cout<<"t1.Data="<<t1.Data<<'\n'; cout<<"t2.Data="<<t2.Data<<'\n'; cout<<"Test::Data="<<Test::Data<<'\n'; }
6、分析下面程序,写出程序的运行结果。 #include<iostream.h> class Test{ static int x,y; public: Test(int a=2,int b=4){x+=a;y+=b;} void show(){cout<<"x="<<x<<"\ty="<<y<<'\n';} }; int Test::x=5; int Test::y=10; void main() { Test a1(100,200),a2; a1.show(); a2.show(); //A
8、下列程序的输出结果第一行是 class S{ int n; public: S(int i){n=i;} operator++( ){n+=10;} operator++(int){n+=5;} void show( ){cout<<n<<endl;} }; void main(void) { S A(5), B(5); ++A; B++;
A.类与对象没有区别 B.要为类和对象分配存储空间 C.对象是类的实例,为对象分配存储空间而不为类分配存储空间 D.类是对象的实例,为类分配存储空间而不为对象分配存储空间 5、在 C++中,数据封装要解决的问题是 A.数据的规范化 B.便于数据转换 C.避免数据丢失 D
D.防止不同模块之间数据的非法访问 C
B. a 和 b 必须为对象 D. a 和 b 均可为整数或实数
C
。
A.使基类公有成员在子类中可以被访问。 B.this 指针必须写成显式的。 C.this 指针总指向要调用的其成员函数的对象。 D.静态成员函数也存在 this 指针 二、程序阅读题 1、#include<iostream> using namespace std; class MyTestClass { private: int NumA; public: MyTestClass(int a) { cout<<a<<'\t'<<"is Constructor."<<endl; NumA=a; } MyTestClass(MyTestClass &b) { cout<<"Copy Constructor."<<endl; NumA=b.NumA; } void Print() { cout<<"The private data is: NumA="<<NumA<<endl; }
A. a 必须为对象,b 可为整数或实数 C. b 必须为对象,a 可为整数或实数 9、若有类定义 class Term{ …… public: int addterm(); }; 作用域运算符::正确使用的是 A.int Term::addterm(){……} B.int ::Termaddterm(){……} C.int Termaddterm()::{……} D.int Termaddterm:: (){……} 10、以下关于 this 指针描述正确的是 A
《类与对象》习题
学号 一、选择题
姓名
1、下列关于成员函数特性的描述中, A.成员函数可以重载 B.成员函数一定为内联函数 C.成员函数可以是静态的 D.成员函数可以设置参数的默认值
B
是不正确的。
2、有关类的说法不正确的是 C A.类是一种用户自定义的数据类型 B.只有类中的成员函数才能直接存取本类中的私有数据 C.类的构造函数与析构函数均可以重载 D.类的成员函数可以是重载函数,或者是有缺省参数的函数 3、关于默认构造函数的说法,下面哪个是错误的 C A.系统自动产生的构造函数为默认构造函数 B.不接受任何参数的构造函数为默认构造函数 C.当用户没有定义默认构造函数,编译器就自动提供默认构造函数 D.用户可以自己定义默认构造函数 4、下列有关类和对象的说法中,正确的是 C
3、写出程序的输出结果 #include <iostream> using namespace std; class Coord { private: int x,y; public: Coord(int i = 0 , int j = 0) { x = i; y = j; } void Print() { cout << "x=" << x << ",y=" << y << endl; } friend Coord operator++(Coord op); }; Coord operator++(Coord op) { ++op.x;
Two = obj.Two; cout << "Copy Structor" << endl; } void show() { cout << "One=" << One << ';' << "Two=" << Two << '\n'; } SomeClass operator^(SomeClass c) { SomeClass Temp(One - c.One , Two * c.Two); return Temp; } ~SomeClass() { }; int main() { SomeClass obj1,obj2(9 , 4); obj2 = obj2 ^ obj1; obj2.show(); cin.get(); return 0; } cout << "Destructor" << endl;}
++op.y; return op; } int main() { Coord obj1(1 , 2) , obj2; obj1.Print(); ++obj1; obj2 = ++obj1; obj1.Print(); obj2.Print(); cin.get(); return 0; }
4、写出程序的输出结果 class A { public: A(int a) { x=a; cout<<"x="<<x<<'\t'<<"class_A"<<'\n'; } ~A() { cout<<"class_~A"<<'\n'; } private: int x; }; class B { A y,z; int s; public: B(int a,int b,int c): y(a+b+c),z(3-a) { s=c-b; cout<<"s="<<s<<'\t'<<"class_B"<<'\n'; } ~B() { cout<<"class_~B"<<'\n'; } }; void main(void) { B s(1,2,3); }