logo资料库

c++试题(哈工大).doc

第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
资料共7页,全文预览结束
6. 关于静态数据成员下列错误的是(D )
A.说明静态数据成员时前边要加修饰符static
B.静态数据成员要在类体外进行初始化
C.在类外引用公有静态的数据成员时,要在静态数据成员前加类名和作用域运算符
复习 一、选择题 1. 通常,拷贝构造函数的参数是( C) A.某个对象名 B.某个对象的成员名 C.某个对象的引用名 D.某个对象的指针名 2. 在公有继承的情况下,基类成员在派生类中的访问权限( A) A.受限制 B.保持不变 C.受保护 D.不受保护 3. 如果类 A 被说明成类 B 的友元,则(D ) A.类 A 的成员即类 B 的成员 B.类 B 的成员即类 A 的成员 C.类 A 的成员函数不得访问类 B 的成员 D.类 B 不一定是类 A 的友元 4. 假定要对类 A 定义加号操作符重载成员函数,实现两个 A 类对象的加法,并返回相加结 果,则该成员函数的声明语句为( B ) A.A operator+(A & a , A & b) B.A operator+(A & a) C.operator+(A a) D.A & operator+( ) 5. ( B )封装捕获到异常时所执行的代码 A.try 块 B.catch 块 C.throw D.exception 6. 关于静态数据成员下列错误的是(D ) A.说明静态数据成员时前边要加修饰符 static B.静态数据成员要在类体外进行初始化 C.在类外引用公有静态的数据成员时,要在静态数据成员前加类名和作用域运算符 D.静态数据成员不是所有对象所共享的 7. 已知:类 A 中一个成员函数说明如下 void Set(A &a);其中,A &a 的含义是( C ) A.定义指向类 A 的指针为 a B.将 a 的地址值赋给变量 Set C.a 是类 A 的对象引用,用来做函数 Set()的参数 D.变量 A 与 a 按位相与作为函数 Set()的参数
8. 下列 C++程序段,(BC )是有错误的或可能给程序的运行带来隐含的错误(选择两项) A. int *p = new int; *p = 10; cout << *p; delete p; B. int *p = new int; p = 100; delete p; C. int *ptr = new int[20]; delete ptr; D. int *ptr = new int[20]; delete [] ptr; 9. 下面 C++程序运行的结果是(D ) #include void func(int x) { x++; cout << x << ” “; } void main() { int x = 5; func(x); cout << x << endl; } A.5 5 B.6 5 C.6 6 D.5 6 二、判断题 1.具有转换函数功能的构造函数,是指只能带有一个或两个参数的构造函数。( ) 2.友元函数是类的成员函数,所以可以存取或修改该类中的私有成员。( F) 3.重新定义的标识符在定义它的区域内是可见的,而与其同名的原标识符在此区域内是不 可见的但是却是存在的。( ) 4. 已知:类 A 中一个成员函数说明如下:void Set(A& a);其中 A& a 的含意是将 a 的地址 值赋给变量 Set。( ) 三、填空题 1. 类的______数据成员____通常定义为 private 类型,而类的__成员函数________通常定义 为 public 类型 2. 类可以由其他类的______________组成。
3. _______是通过虚函数实现的。 4. ____________指针引用对象的非静态成员函数和非静态数据成员。 四、阅读代码 1. #include using namespace std; class base { int n; public: base(int a) { cout << "constructing base class" << endl; n = a; cout << "n = " << n << endl; } ~base(){cout << "destructing base class" << endl;} class subs : public base { base bobj; int m; public: subs(int a, int b, int c) : base( a ), bobj( c ) { cout << "constructing sub class" << endl; m = b; cout << "m = " << m << endl; } ~subs(){cout << "destructing sub class" << endl;} }; }; } int main() { subs s(1, 2, 3); return 0; 2. #include
#include using namespace std; class Oyster { public: Oyster( string genusString) { genus = genusString; } string getPhylum() const { return “Mollusca”; } virtual string getName() const { return “Oyster class”; } string getGenus() const { return genus; } virtual void print() const = 0; private: string genus; }; class VirginiaOyster : public Oyster { public: VirginiaOyster() : Oyster( “Crassostrea” ) { } virtual string getName() const { return “VirginiaOyster class”; } virtual void print() const { cout << "Phylum: " << getPhylum().c_str()
<< "\tGenus: " << getGenus().c_str() << "\tName: " << getName().c_str(); } }; int main() { VirginiaOyster oyster; Oyster *baseClassPtr; baseClassPtr = &oyster ; baseClassPtr->print() ; cout << endl ; return 0; #include #include using namespace std; } 3. : out( "EXCEPTION: Division by zero attempted." ) class DivideZero { public: DivideZero() { } string display() const { return out; } private: string out; }; double arithmetic( int n, int d ) { if( d == 0 ) throw DivideZero(); return static_cast< double > ( n ) / d; } int main() {
try { } cout << arithmetic ( 24, 6 ) << endl; cout << arithmetic ( 1, 3 ) << endl; cout << arithmetic ( 9, 0 ) << endl; catch ( DivideZero &e ) { cout << e.display() << endl; } return 0; } 五、简答题 1.请指出下列程序片断中的错误。并解释错在何处: int index = 255; const int *ptr = &index; int *const ntptr = &index; *ptr = 430; *ntptr = 4330; int another = 5; ptr = &another; ntptr = &another; (A) (B) (C) (D) 2.运行下面的 Test 函数会有什么样的结果 void Test(void) { char *str = (char *)malloc(100); strcpy(str, “hello”); free(str); if( str != NULL) { strcpy(str, “world”); printf(str); } } 3.什么是类?类与对象的区别是什么? 4.什么是多态?在 C++中多态是如何实现的?
六、编程题 1. 编写类String 的构造函数、析构函数和赋值函数 String(const char *str = NULL); String(const String &other); ~ String(void); String & operate =(const String &other); class String { public: private: char *m_data; }; 请编写 String 的上述 4 个函数。 2. 下面是一个类的测试程序,请写出被测试的 Test 类的实现。 int main() { Test a; a.init(68,55); a.print(); return 0; } 其执行结果为: “测试结果:68-55=13”
分享到:
收藏