C++基础专项练习二,,,水平依然不到家!

错题分析与总结

1 . 有如下模板定义:

template <class T>
T fun(T x,T y){
return x*x+y*y;
}

在下列对fun的调用中,错误的是()

A. fun(1, 2)

B. fun(1.0, 2)

C. fun(2.0, 1.0)

D. fun< float >(1, 2.0)

分析:这是一道C++模板的题目,模板函数的调用,这里主要是要求函数参数返回值的类型一致;

对于选项A,参数都是int类型,符合要求;选项B,参数为浮点型与整型,类型不一致,错误;选项C,参数都是浮点型,类型一致;选项D,通过强制类型转换,将参数都转换为浮点型,类型一致;

答案:B

总结:错选D,对模板函数的调用了解不透彻;

2 . c++中,声明const int i,是在哪个阶段做到 i只可读的?

A. 编译

B. 链接

C. 运行

D. 以上都不对

分析:const用来说明所定义的变量是只读的。 这些在编译期间完成,编译器可能使用常数直接替换掉对此变量的引用。

答案:A

总结:错选C

3 .类成员函数的重载、覆盖和隐藏区别描述正确的有?

A .覆盖是指在同一个类中名字相同,参数不同

B .重载是指派生类函数覆盖基类函数,函数相同,参数相同,基类函数必须有virtual关键字

C .派生类函数与基类函数相同,但是参数不同,会”隐藏”父类函数

D .函数名字相同,参数相同,基类无virtual关键字的派生类的函数会”隐藏”父类函数

分析:关于类成员函数的重载、覆盖和隐藏概念非常相似,下面总结如下:

a.成员函数被重载的特征:

(1)相同的范围(在同一个类中);

(2)函数名字相同;

(3)参数不同;

(4)virtual 关键字可有可无。

b.覆盖是指派生类函数覆盖基类函数,特征是:

(1)不同的范围(分别位于派生类与基类);

(2)函数名字相同;

(3)参数相同;

(4)基类函数必须有virtual 关键字。

c.“隐藏”是指派生类的函数屏蔽了与其同名的基类函数,规则如下:

(1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基类的函数将被隐藏(注意别与重载混淆)。

(2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual 关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)

答案: CD 此题是多项选择

4 .下面这个程序执行后会有什么错误或者效果:

#define MAX 255
int main()
{
unsigned char A[MAX], i;
for (i = 0; i <= MAX; i++)
A[i] = i;
}

A. 数组越界

B. 死循环

C. 栈溢出

D. 内存泄露

分析: 死循环加数组越界访问(C/C++不进行数组越界检查 MAX=255;

(1)数组A的下标范围为:0….MAX-1;

(2)当i循环到255时,循环内执行: A[255]=255;这句本身没有问题,但是返回for (i=0;i<=MAX;i++)语句时,由于unsigned char的取值范围在(0..255),i++以后i又为0了,这样就会无限循环下去,造成了死循环;

答案: AB

5 .关于static用途说法正确的是?

A .声明静态外部类

B .声明静态外部全局变量

C .声明静态外部函数

D .声明静态局部变量

分析:类型声明符在C语言里面主要有三个用途:

1:设置静态局部变量,变量只定义一次,不能被别的函数使用

2:设置静态全局变量,变量不能被外部文件所使用

3:在类中设置静态函数,只能访问静态变量

答案:BCD

6 .请找出下面代码中的所有错误。说明:以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”?

1 #include "string.h"
2 int main()
3 {
4 char *src = "hello,world";
5 char *dest = NULL;
6 int len = strlen(src);
7 dest = (char *)malloc(len);
8 char *d = dest;
9 char *s = src[len];
10 while (len-- != 0)
11 d++ = s--;
12 printf("%s", dest);
13 return 0;
14 }

A .第7行要为’\0’分配一个空间

B .第9行改成char * s = &src[len-1]

C .第12行前要加上*d = 0;

D .第13行前要加上free(dest)释放空间

分析:

int main()
{
char *src = "hello,world";
int len = strlen(src);
char *dest = (char *)malloc(len + 1); //要为\0分配一个空间
char *d = dest;
char *s = &src[len - 1]; //指向最后一个字符
while ( len-- != 0 )
*d++ = *s--;
*d = 0; //尾部要加\0
printf("%s\n", dest);
free(dest);// 使用完,应当释放空间,以免造成内存汇泄露
return 0;
}

答案:ABCD

精题收藏

1 . 下列一段C++代码的输出是?

#include "stdio.h"
class Base
{
public:
int Bar(char x)
{
return (int)(x);
}
virtual int Bar(int x)
{
return (2 * x);
}
};
class Derived : public Base
{
public:
int Bar(char x)
{
return (int)(-x);
}
int Bar(int x)
{
return (x / 2);
}
};
int main(void)
{
Derived Obj;
Base *pObj = &Obj;
printf("%d,", pObj->Bar((char)(100)));
printf("%d,", pObj->Bar(100));
}

A .100,-100

B .100,50

C .200,-100

D .200,50

分析:

Derived Obj;

Base *pObj = &Obj;

printf(“%d,”, pObj->Bar((char)(100)))

printf(“%d,”, pObj->Bar(100));

第一个Bar(char)是非虚函数,因此是静态绑定,静态绑定是指指针指向声明时的对象,pObj声明时为Base类,因此调用的是Base类的Bar(char)

第二个Bar(char)是虚函数,因此是动态绑定,动态绑定是指指针指向引用的对象,pObj引用Derived对象,因此调用的是Derived类的Bar(int)

《C++专项练习》 — (2)的更多相关文章

  1. 《从零开始做一个MEAN全栈项目》(1)

    欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 在本系列的开篇,我打算讲一下全栈项目开发的优势,以及MEAN项目各个模块的概览. 为什么选择全栈开发? ...

  2. 《从零开始做一个MEAN全栈项目》(2)

    欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习.   上一节简单介绍了什么是MEAN全栈项目,这一节将简要介绍三个内容:(1)一个通用的MEAN项目的技 ...

  3. 《从零开始做一个MEAN全栈项目》(3)

    欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 上一篇文章给大家讲了一下本项目的开发计划,这一章将会开始着手搭建一个MEAN项目.千里之行,始于足下, ...

  4. 《从零开始做一个MEAN全栈项目》(4)

    欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 在上一篇中,我们讲了如何去构建第一个Express项目,总结起来就是使用两个核心工具,express和 ...

  5. 一个关于vue+mysql+express的全栈项目(一)

    最近学了mysql数据库,寻思着能不能构思一个小的全栈项目,思来想去,于是就有了下面的项目: 先上几张效果图吧       目前暂时前端只有这几个页面,后端开发方面,有登录,注册,完善用户信息,获取用 ...

  6. Vue、Nuxt服务端渲染,NodeJS全栈项目,面试小白的博客系统~~

    Holle,大家好,我是李白!! 一时兴起的开源项目,到这儿就告一段落了. 这是一个入门全栈之路的小项目,从设计.前端.后端.服务端,一路狂飙的学习,发量正在欣喜若狂~~ 接触过WordPress,H ...

  7. Vue、Node全栈项目~面向小白的博客系统~

    个人博客系统 前言 ❝ 代码质量问题轻点喷(去年才学的前端),有啥建议欢迎联系我,联系方式见最下方,感谢! 页面有啥bug也可以反馈给我,感谢! 这是一套包含前后端代码的个人博客系统,欢迎各位提出建议 ...

  8. SpringBoot 整合 Elastic Stack 最新版本(7.14.1)分布式日志解决方案,开源微服务全栈项目【有来商城】的日志落地实践

    一. 前言 日志对于一个程序的重要程度不用过多的言语修饰,本篇将以实战的方式讲述开源微服务全栈项目 有来商城 是如何整合当下主流日志解决方案 ELK +Filebeat . 话不多说,先看实现的效果图 ...

  9. 全栈项目|小书架|服务器端-NodeJS+Koa2实现首页图书列表接口

    通过上篇文章 全栈项目|小书架|微信小程序-首页水平轮播实现 我们实现了前端(小程序)效果图的展示,这篇文章来介绍服务器端的实现. 首页书籍信息 先来回顾一下首页书籍都有哪些信息: 从下面的图片可以看 ...

  10. 全栈项目|小书架|服务器开发-NodeJS 使用 JWT 实现登录认证

    通过这篇 全栈项目|小书架|服务器开发-JWT 详解 文章我们对JWT有了深入的了解,那么接下来介绍JWT如何在项目中使用. 安装 $ npm install jsonwebtoken 生成 Toke ...

随机推荐

  1. C++类的默认函数

    在C++中,一个类有八个默认函数: 默认构造函数: 默认拷贝构造函数: 默认析构函数: 默认重载赋值运算符函数: 默认重载取址运算符函数: 默认重载取址运算符const函数: 默认移动构造函数(C++ ...

  2. Zabbix-Server 添加主机

    之前讲解了如何配置Zabbix 服务端和客户端,现在我们来讲解下如何在zabbix监控端添加主机 Zabbix服务端:Centos 配置 Zabbix服务端 Zabbix客户端:Centos 配置 Z ...

  3. c++ 头文件路径选择

    单文件引用头文件./ 当前目录 ../ 父级目录 / 根目录              多文件引用头文件多文件引用头文件 定义单独放在cpp文件里面 ,声明放在().h)里面

  4. js封装xhr【重复造轮子】

    仿jquery ajax,不过功能没那么多.贴代码 --------------------------------------分割线--------------------------------- ...

  5. Hdu 4778 Gems Fight! (状态压缩 + DP)

    题目链接: Hdu 4778 Gems Fight! 题目描述: 就是有G种颜色,B个背包,每个背包有n个宝石,颜色分别为c1,c2............两个人轮流取背包放到公共容器里面,容器里面有 ...

  6. Elipse 无法启动问题(转)

    来源: <http://www.cnblogs.com/coding-way/archive/2012/10/17/2727481.html> 当选择完workspace之后,eclips ...

  7. 增强的for循环

  8. RHEL 6.5----CDN(lumanger)

    主机名  IP   服务 master 192.168.30.130  CDN(LuManager) slave 192.168.30.131  DNS  软件安装包下载地址及安装方法 http:// ...

  9. PHP 讓 json_encode() 指定回傳格式

    PHP 回傳 JSON 很方便, 只要將資料經過 json_encode() 就解決了. 不過因為 PHP 自動轉換型別, 造成很多資料都習慣存成字串, 希望在輸出 JSON 的時候, 數字部份可以輸 ...

  10. php传json格式给C++时乱码解决方案

    今天在做给C++传json数据时,C++无法识别到中文 网上查下原因有json只支持utf-8,但是我的整个项目编码都是utf8的,没有出现过其它编码,所以问题还是抛给了C++解决,后来经一高手解答说 ...