C/C++ 经典测试题练习(1)

C/C++ 经典测试题练习

1、有函数定义:

void test(int a){}

void test(float a){}

则以下调用错误的是:D

A. test(1);

B. test(‘c’);

C. test(2+’d’)

D. test(0.5) 【默认const double 无法匹配int 和 float】

2、struct s

{

int x: 3; 【数据结构:位域!x,y,z是一个int型的3个位域,所以以int(4个字节)来计算】

int y: 4;

int z: 5;

double a;

}

求sizeof(s): 答案16 内存对齐!内存对齐!内存对齐!需要补一个4字节,构成8-8字节对齐

3、求下列程序输出

<p class="p0">

#include "stdio.h"

class A

{

public:

A()【构造函数】

{

printf("1");

}

A(A &a)【拷贝构造函数】

{

printf("2");

}

A &operator=(const A &a)【重载的赋值函数】

{

printf("3");

return *this;

}

};

int main()

{

A a;

A b = a;

}

</p>

答案:12

A a,定义一个对象,毫无疑问调用构造函数

A b=a,这是定义了对象b,且以a对b进行初始化,这个时候需要调用拷贝构造函数。如果写成A a;A b;b=a;则是调用后面重载的赋值函数,这种情况应该输出113。 这个题主要考察赋值和初始化的区别。

4、MFC类库中,为何CObject的析构函数是虚拟的?为什么构造函数不能为虚?

答:1. 将CObject的析构函数设成virtual的,则所有其派生类的析构函数都会自动变为virtual型,这保证了在所有情况下,不会出现派生类的析构函数未被调用导致的内存泄露(如基类定义的指针指向派生类对象)。2. 虚调用是一种可以再只有部分信息的情况下工作的机制,特别允许我们调用一个只知道接口而不知道其准确对象类型的函数。但创建对象的时候必须要知道对象的准确类型,因此构造函数不能为虚。

(另外,使用虚函数是有代价的,每一个虚函数对象必须维护一个V表,使用虚函数会产生系统开销,所以小类不想派生其他类,就没必要用虚函数)。

5、关于拷贝构造函数

6、多态性是允许你将父对象设置成为和它一个或多个子对象相等的技术,父对象可以根据当前赋值给它的子对象的特性以不同的方式运作。主要通过虚函数来实现。覆盖是子类重新定义父类的虚函数的做法。重载是指允许多个同名函数,而这些函数的参数表不同。重载与多态无关,覆盖与多态相关。多态的目的->接口重用。例如:定义一个飞机的基类,直升机和喷气式飞机的子类,要让一个全局的函数plane_fly起飞所有种类的飞机,只需要plane_fly(const ppplane:plane)就行了,不管来什么飞机,都会根据飞机的特性起飞,即parent=child.

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-02 16:48:24

C/C++ 经典测试题练习(1)的相关文章

4.26日病毒日即将到来,你的电脑够安全吗?

近年来流氓软件.后门程序.木马等网络威胁数量暴增,电脑病毒是个令人讨厌的字眼,却作死一般的围绕在我们每一位网民身边.为了提醒后人不忘CIH病毒带来的教训,每年的4月26日,是世界电脑病毒日.本期,小编为大家整理网络安全技术专题,防护电脑,反"作死"!欢迎大家分享,共同应对网络安全问题. 计算机安全问题,应该像每家每户的防火防盗问题一样,做到防范于未然.51CTO学院本期专题推荐: 运维中经常遇见的几种劫持,扼杀它! Web渗透测试之常见漏洞解析视频课程 2015热点安全事件原理解读与分

CSS(4)---三大特性(继承性,层叠性,优先级)

CSS(4)---三大特性(继承性,层叠性,优先级) CSS有三大特性分别是: 继承性,层叠性,优先级. 一.继承性 概念 给父元素设置一些属性,子元素也可以使用,这个我们就称之为继承性. 注意 1.并不是所有的属性都可以继承, 只有以color/font-/text-/line-开头的属性才可以继承 2.在CSS的继承中不仅仅是儿子可以继承, 只要是后代都可以继承 3.继承性中的特殊性 3.1 a标签的文字颜色和下划线是不能继承的 3.2 h标签的文字大小是不能继承的 示例 <!-- 样式部分

程序员常识--OJ系统及ACM测试题库大全

OJ是Online Judge系统的简称,用来在线检测程序源代码的正确性.著名的OJ有RQNOJ.URAL等.国内著名的题库有北京大学题库.浙江大学题库等.国外的题库包括乌拉尔大学.瓦拉杜利德大学题库等. 简介: Online Judge系统(简称OJ)是一个在线的判题系统.用户可以在线提交程序多种程序(如C.C++)源代码,系统对源代码进行编译和执行,并通过预先设计的测试数据来检验程序源代码的正确性. 程序: 一个用户提交的程序在Online Judge系统下执行时将受到比较严格的限制,包括运

经典排序算法 - 冒泡排序Bubble sort

 原文出自于 http://www.cnblogs.com/kkun/archive/2011/11/23/bubble_sort.html 经典排序算法 - 冒泡排序Bubble sort 原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换, 这样一趟过去后,最大或最小的数字被交换到了最后一位, 然后再从头开始进行两两比较交换,直到倒数第二位时结束,其余类似看例子 例子为从小到大排序, 原始待排序数组| 6 | 2 | 4 | 1 | 5 | 9 | 第一趟排序(外循环) 第

POSIX 线程详解(经典必看)

总共三部分: 第一部分:POSIX 线程详解                                   Daniel Robbins ([email protected]), 总裁/CEO, Gentoo Technologies, Inc.  2000 年 7 月 01 日 第二部分:通用线程:POSIX 线程详解,第 2部分       Daniel Robbins ([email protected]), 总裁/CEO, Gentoo Technologies, Inc.  20

时序图与状态图(Rose) - Windows XP经典软件系列

最近开始了自己高级数据结构之旅,在这次旅行中,我将持续把一些高级的数据结构从理论到编码都过一遍,同时通过博客形式分享出来,希望大家指出不足之处! 二叉排序树是一种动态排序的数据结构,支持插入.删除.查找等操作,且平均时间复杂度为O(log(N)),但是普通二叉排序树不能保证树退化为一颗分支的情况,此时最坏情况下的时间复杂度为O(N).此时,平衡二叉树的产生了.平衡二叉树是一种动态调整平衡的数据结构,但理想的平衡二叉树很难,于是人们使用AVL.红黑树.Treap.伸展树等来替代平衡二叉树,这些数据

类图(Rose) - Windows XP经典软件系列

最近开始了自己高级数据结构之旅,在这次旅行中,我将持续把一些高级的数据结构从理论到编码都过一遍,同时通过博客形式分享出来,希望大家指出不足之处! 二叉排序树是一种动态排序的数据结构,支持插入.删除.查找等操作,且平均时间复杂度为O(log(N)),但是普通二叉排序树不能保证树退化为一颗分支的情况,此时最坏情况下的时间复杂度为O(N).此时,平衡二叉树的产生了.平衡二叉树是一种动态调整平衡的数据结构,但理想的平衡二叉树很难,于是人们使用AVL.红黑树.Treap.伸展树等来替代平衡二叉树,这些数据

PHP配置文件经典漏洞

phithon师父在小蜜圈里放了一个经典的配置文件写入问题漏洞. <?phpif(!isset($_GET['option'])) die();$str = addslashes($_GET['option']);$file = file_get_contents('./config.php');$file = preg_replace('|\$option=\'.*\';|', "\$option='$str';", $file);file_put_contents('./co

【转】嵌入式软件工程师经典笔试题

嵌入式软件工程师经典笔试题 > 预处理器(Preprocessor) 1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等) 2). 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中 有多少秒而不是计算出实际的值,是更清晰而没有代价的. 3).