C++试题及答案.doc
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
C++试题及答案 本文档提供了一份C++考试试卷,涵盖了C++语言的基本概念、语法、函数、类、继承、运算符重载等多方面的知识点。下面是对每个问题的详细解释和答案: 1. 已知:char *s="123456"; 则 cout<<s+2; 的输出结果为( )。 答案:C) 3456 解释:在C++中,char* 是一个指针类型,指向字符串的首地址。s+2 表示从字符串的第三个字符开始输出,因此输出结果为 3456。 2. 已知:char *s="abcde"; 则 sizeof(s)、sizeof(*s)、strlen(s) 的值依次为( )。 答案:B) 4 1 5 解释:sizeof(s) 返回指针的大小,即4字节;sizeof(*s) 返回字符的大小,即1字节;strlen(s) 返回字符串的长度,即5个字符。 3. 下列语句中正确的是( )。 答案:D) char *s="abcdefg"; cout<<*s; 解释:A) char *s; *s="abcdefg"; 是错误的,因为*s 需要先被初始化;B) char *s; cin>>s; 是错误的,因为cin 需要读取到字符数组的首地址,而不是指针;C) char *s1="abcd",*s2="efghijk";strcpy(s1,s2); 是错误的,因为strcpy 需要将字符串复制到字符数组中,而不是指针。 4. C++中,关于构造函数和析构函数,正确的描述是( )。 答案:C) 已知类 Student 以及 Student *p; 在使用 p=new Student; 时自动调用无参构造函数创建动态对象,在 delete p; 时自动调用析构函数释放动态对象。 解释:A) 在定义类时,必须自定义构造函数和析构函数,在创建对象时自动调用构造函数,在释放对象时自动调用析构函数 是错误的,因为构造函数和析构函数可以由编译器提供默认的实现;B) 构造函数和析构函数均可以重载 是错误的,因为析构函数不能被重载。 5. 关于拷贝构造函数的描述正确的是( )。 答案:B) 如果不自定义拷贝构造函数,系统提供默认的拷贝构造函数。 解释:A) 通常的拷贝构造函数的参数是对象的引用类型,而不是指针类型;C) 如果有自定义的构造函数,系统就不再提供拷贝构造函数 是错误的,因为系统总是提供默认的拷贝构造函数,除非你自定义了构造函数。 6. 有关静态成员的描述错误的是( )。 答案:D) 类中一旦定义了静态数据成员,就必须定义静态成员函数,以便对静态数据成员进行操作。 解释:A) 某个类的静态数据成员由该类的所有对象所共享 是正确的;B) 类的公有静态数据成员既可以用类的对象访问,也可以直接用作用域运算符“::”通过类名来访问 是正确的;C) 静态数据成员既可以是私有成员,也可以是公有成员 是正确的。 7. 一个类的友元函数或友元类能够通过成员访问运算符访问该类的( )。 答案:A) 所有成员 解释:友元函数或友元类可以访问类的所有成员,包括私有成员、保护成员和公有成员。 8. 下面关于继承方式的描述中错误的是( )。 答案:D) 无论哪种继承方式,基类中的私有成员在派生类中都无法直接访问。 解释:A) 公有继承时,基类的公有成员和保护成员在派生类中都成为公有成员 是正确的;B) 私有继承时,基类的公有成员和保护成员在派生类中都成为私有成员 是正确的;C) 保护继承时,基类的公有成员和保护成员在派生类中都成为保护成员 是正确的。 9. 类型兼容是指在基类对象可以出现的地方,都可以使用公有派生类的对象,已知: class BaseClass { //…}; class DerivedClass:public BaseClass { //…}; BaseClass b,*pb; DerivedClass d,*pd;下面不属于类型兼容的是( )。 答案:C) pd=&b; 解释:A) b=d; 是正确的,因为公有派生类的对象可以赋值给基类对象;B) BaseClass &bb=d; 是正确的,因为公有派生类的对象可以被引用为基类对象;D) pb=&d; 是正确的,因为公有派生类的对象可以被赋值给基类指针。 10. 在派生类中重新定义虚函数时,除了( ),其他方面都必须与基类中相应的虚函数保持一致。 答案:D) 函数体 解释:A) 参数个数、B) 参数类型、C) 函数名称 都必须与基类中相应的虚函数保持一致。 11. 下列运算符中,必须使用成员函数进行重载的是( )。 答案:D) ++ 解释:A) ==、B) =、C) >> 都可以使用非成员函数进行重载,而++ 运算符必须使用成员函数重载。 12. 下列关于运算符重载的描述中,错误的是( )。 答案:C) 运算符重载不可以改变运算符的操作数个数。 解释:A) 运算符重载不可以改变优先级 是正确的;B) 运算符重载不可以改变结合性 是正确的;D) 加法运算符“+”和赋值运算符“=”都重载之后,意味着“+=”也被重载了 是正确的。 13. 有关运算符重载的说法错误的是( )。 答案:A) 在一个类中,可以对一个操作符进行多次重载。 解释:B) 重载赋值运算符“=”时,必须考虑对象的复制和赋值问题。
剩余15页未读,继续阅读
- 粉丝: 95
- 资源: 1万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助