1、C++的类和C里面的struct有什么区别?
答:struct和class的区别在于C里面的struct没有定义方法,而C++的类是将不同类型的数据和与这些数据相关的操作封装在一起的集合体,包含了操作方法。
2、请说出const与#define相比,有何优点?
答:const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误。
有些集成化的调试工具可以对const常量进行调试,但是不能对宏常量进行调试。
3、类成员函数的重载、覆盖和隐藏区别?
答:成员函数被重载的特征:相同的范围(在同一个类中);函数名字相同;参数不同;virtual关键字可有可无。
覆盖是指派生类函数覆盖基类函数,其特征是:函数名字相同;参数相同;范围不同(分别位于派生类与基类中);基类函数必须有 virtual
关键字。
“隐藏”是指派生类的函数屏蔽了与其同名的基类函数,规则如下:
如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基类的函数将被隐藏(注意别与重载混淆)。如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)。
4、堆和栈的区别?
答:栈是由编译器自动分配释放,用来存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
堆一般是由程序员分配释放,若程序员不释放,程序结束时可能由操作系统回收。
5、面向对象的三个基本特征,并简单叙述之?
答:封装:将客观事物抽象成类,每个类对自身的数据和方法实行访问权限保护(private,protected,public)。
继承:广义的继承有三种实现形式:实现继承、可视继承、接口继承。前两种(类继承)和后一种(对象组合=>接口继承以及纯虚函数)构成了功能复用的两种方式。
多态:是将父类对象设置成为和一个或多个他的子类对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给其父类类型的指针。
6、构造函数可否是虚函数,为什么?析构函数呢,可否是纯虚的呢?
答:构造函数不能为虚函数,要构造一个对象,必须清楚地知道要构造什么,否则无法构造一个对象。析构函数可以为纯虚函数。
7、C++是不是类型安全的?
答:C++不是类型安全的。因为两个不同类型的指针之间可以强制转换(用reinterpret cast)。
8、多态的作用?
答:多态的作用包括:隐藏实现细节,使得代码能够模块化;扩展代码模块,实现代码重用。接口重用:为了在继承和派生的时候,保证使用家族中任一类的实例的某一属性时的正确调用。
9、请找出下面代码中的错误。
void test (){
char string[10];
char*
str1 = "0123456789";
strcpy( string, str1 );
}
答:字符串str1需要11个字节才能存放下(包括末尾的’\0’),而string只有10个字节的空间,strcpy会导致数组越界。
10、请找出下面代码中的错误。
void test(char* str1){
char string[10];
if( strlen( str1 ) <= 10 ){
strcpy( string, str1
);
}
}
答:if(strlen(str1) <= 10)应改为if(strlen(str1)
< 10),因为strlen的结果未统计’\0’所占用的1个字节。
11、参数传递具体有哪几种方式?
答:参数传递具体包括:值传递,指针传递和引用传递三种方式。
12、重载和重写的区别?
答:首先从定义上来说:
重载:是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。
重写:是指子类重新定义复类虚函数的方法。
其次从实现原理上来说:
重载:编译器根据函数不同的参数表,对同名函数的名称做修饰,然后这些同名函数就成了不同的函数(至少对于编译器来说是这样的)。如,有两个同名函数:function
func(p:integer):integer;和function
func(p:string):integer;。那么编译器做过修饰后的函数名称可能是这样的:int_func、str_func。对于这两个函数的调用,在编译期间就已经确定了,是静态的。也就是说,它们的地址在编译期就绑定了(早绑定),因此,重载和多态无关。
重写:和多态真正相关。当子类重新定义了父类的虚函数后,父类指针根据赋给它的不同的子类指针,动态的调用属于子类的该函数,这样的函数调用在编译期间是无法确定的(调用的子类的虚函数的地址无法给出)。因此,这样的函数地址是在运行期绑定的(晚绑定)。
13、虚函数的本质和实现机制?
答:虚函数的本质就是通过基类访问派生类定义的函数。虚函数只能借助于指针或者引用来达到多态的效果。
分享到:
相关推荐
c++笔试题汇总.pdf C++经典面试题库 附带参考答案.docx C++语言程序设计试题.docx CC++面试问题分类大汇总.docx C_C++笔试题大全.doc gamesloft C++面试题目.docx 常见C++笔试题目整理(含答案).docx 经典C++面试题...
C++笔试题笔记 本资源摘要信息将详细解释C++笔试题中的知识点,涵盖选择题、填空题、简答题和编程题四个部分。 一.选择题 1. 计算机科学中,函数func(x)的返回值是多少?这个问题考察了位操作的知识。函数func...
c++笔试题汇总.rarc++笔试题汇总.rarc++笔试题汇总.rarc++笔试题汇总.rarc++笔试题汇总.rarc++笔试题汇总.rarc++笔试题汇总.rarc++笔试题汇总.rarc++笔试题汇总.rarc++笔试题汇总.rarc++笔试题汇总.rar
这是本人亲自总结的C++笔试题汇总,参考了网络很多C++笔试题(包括各大IT公司,游戏公司),挑选出了一些经典的题和难题做解析。 作用:对工作面试笔试和C++水平提高很有用处 内容:C++,STL等;
总结来说,C++笔试题汇总帮助我们复习了C++编程中的多个基础知识点,这不仅对面试准备有重要意义,更重要的是,这为我们提供了理解和运用C++编写高效、稳定程序的基石。通过这些问题的实践,我们可以更加深入地理解...
西门子社招软件C/C++笔试题及答案
标题中的"C++笔试题(很全的)"表明这是一份关于C++编程语言的面试或测试题目集合,主要涉及C++的高级特性,如多态性、文件操作以及程序控制流程等方面。描述中提到了几个具体的C++知识点,下面我会详细解释这些知识...
### C++笔试题知识点解析 #### 1. 类与对象的概念 - **概念解析**: - **类**:在面向对象编程中,类是一种抽象数据类型,它封装了一组属性(即数据成员)和一组行为(即成员函数)。类是对象的模板,用于定义一组...
《C/C++笔试题集锦》是一份涵盖了广泛C/C++知识的资源,旨在帮助求职者准备相关的技术面试和笔试。这份资料不仅包含了常见的C/C++编程题目,还深入探讨了语言的一些关键概念,如类型转换和对象模型,这对于理解和...
C++笔试题.doc.rarC++笔试题.doc.rarC++笔试题.doc.rarC++笔试题.doc.rarC++笔试题.doc.rarC++笔试题.doc.rarC++笔试题.doc.rarC++笔试题.doc.rarC++笔试题.doc.rarC++笔试题.doc.rarC++笔试题.doc.rarC++笔试题.doc...
本篇文章将详细解读"C++笔试题大全1(史上最齐全)"这一资源,涵盖数据结构、算法、内存管理和C++特性等核心知识点。 一、数据结构 数据结构是计算机科学中的基石,它研究如何有效地组织和存储数据,以便于高效地...
这份“大量C/C++笔试题”集合涵盖了从基础知识到深入概念的各种问题,旨在帮助求职者在面试过程中表现出色。以下是一些重要的C/C++知识点,结合题目可能会涉及到的内容进行详尽阐述。 1. **基本语法**:这是C/C++...
标题中的“各大公司常见C/C++笔试题整理,含答案”指的是这是一份集合了多个知名公司在招聘过程中可能会出现的C/C++编程语言的笔试题目,这些题目通常用于测试应聘者对C/C++语言的基本理解、语法掌握以及编程能力。...
"C/C++笔试题库(整理版)" 本资源库收录了C/C++经典问题和面试笔试题,涵盖了基础概念、指针、数组、内存操作、字符串处理、断言等多个方面。通过本资源库,读者可以深入理解C/C++语言的精髓,掌握编程基础知识,...
C/C++笔试题解析 本资源为C/C++笔试题,涵盖了C/C++语言的多方面知识点,包括函数原型、类和对象、继承、虚函数、字符串处理、内存管理等。下面将详细解析每个知识点。 一、对错题 1. 函数原型时不需要指明每个...
腾讯公司的C/C++笔试题主要考察开发者在C和C++语言、数据结构、算法以及操作系统等基础领域的掌握程度。以下是一些重要的知识点解析: 1. 宏定义:题目中的MAX(a, b)宏定义用于比较两个数的大小,且不能使用大于、...
《百度2012校园招聘C/C++笔试题解析与深度探讨》 在信息技术日新月异的时代,软件工程师的招聘竞争愈发激烈。百度作为中国互联网巨头,对技术人才的选拔标准自然也是高人一等。2012年的百度校园招聘C/C++笔试题,...
各大公司C++笔试题(含部分答案) 各大公司C++笔试题(含部分答案)
这份“C/C++笔试题”压缩包提供了一些游戏公司笔试题,对于准备面试或自我提升具有很高的参考价值。 1. **基本语法与数据类型**:C/C++的基础始于了解各种数据类型(如int、char、float、double等),理解它们的...