华为、中心、公司面试常用c++问题及回答

华为、中心、公司面试常用c++问题及回答

ID:39583034

大小:42.50 KB

页数:4页

时间:2019-07-06

华为、中心、公司面试常用c++问题及回答_第1页
华为、中心、公司面试常用c++问题及回答_第2页
华为、中心、公司面试常用c++问题及回答_第3页
华为、中心、公司面试常用c++问题及回答_第4页
资源描述:

《华为、中心、公司面试常用c++问题及回答》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、1、请问C++的类和C里面的struct有什么区别?类中可以包含函数而struct中只能包含变量,类可以继承,封装,多态和抽象性而struct不可以2、请讲一讲析构函数和虚函数的用法和作用?析构函数是当一个对象的生命周期结束时,系统调用析构函数来释放对象所占内存空间。虚函数是实现运行多态的函数3、面向对象的概念对象:现实事物的实体叫对象。对象是包含现实世界中事物特征的抽象实体,它反应了系统为止保存信息和与之交互的方法。对象=数据+作用于这些数据的操作。类:类是对象的模板。即类是对一组有相同数据和相同操作的对象的定义,一个类所包含的方法和数据描述一组对象的共同属性和行为。类是在对象之上的抽

2、象,对象则是类的具体化,是类的实例。类可有其子类,也可有其它类,形成类层次结构。消息:消息是对象之间进行通信的一种规格说明。一般它由三部分组成:接收消息的对象、消息名及实际变元。面向对象主要特征:  封装性:封装是一种信息隐蔽技术,它体现于类的说明,是对象的重要特性。封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,使得用户只能见到对象的外特性(对象能接受哪些消息,具有那些处理能力),而对象的内特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。封装的目的在于把对象的设计者和对象者的使用分开,使用者不必知晓行为实现的细节,只须用设计者提供的消息来访

3、问该对象。继承性:继承性是子类自动共享父类之间数据和方法的机制。它由类的派生功能体现。一个类直接继职其它类的全部描述,同时可修改和扩充。继职具有传达室递性。继职分为单继承(一个子类只有一父类)和多重继承(一个类有多个父类)。类的对象是各自封闭的,如果没继承性机制,则类对象中数据、方法就会出现大量重复。继承不仅支持系统的可重用性,而且还促进系统的可扩充性。多态性:对象根据所接收的消息而做出动作。同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。利用多态性用户可发送一个通用的信息,而将所有的实现细节都留给接受消息的对象自行决定,如是,同一消息即可调用不同的方法。例如:pri

4、nt消息被发送给一图或表时调用的打印方法与将同样的print消息发送给一正文文件而调用的打印方法会完全不同。多态性的实现受到继承性的支持,利用类继承的层次关系,把具有通用功能的协议存放在类层次中尽可能高的地方,而将实现这一功能的不同方法置于较低层次,这样,在这些低层次上生成的对象就能给通用消息以不同的响应。在oopl中可通过在派生类中重定义基类函数(定义为重载函数或虚函数)来实现多态性。  综上可知,在oo方法中,对象和传递消息分别表现事物及事物间相互联系的概念。类和继承是是适应人们一般思维方式的描述范式。方法是允许作用于该类对象上的各种操作。这种对象、类、消息和方法的程序设计范式的基本

5、点在于对象的封装性和类的继承性。通过封装能将对象的定义和对象的实现分开,通过继承能体现类与类之间的关系,以及由此带来的动态联编和实体的多态性,从而构成了面向对象的基本特征。4、MFC中CString是类型安全类么?答:不是,其它数据类型转换到CString可以使用CString的成员函数Format来转换5、.C++中为什么用模板类。答:(1)可用来创建动态增长和减小的数据结构(2)它是类型无关的,因此具有很高的可复用性。(3)它在编译时而不是运行时检查数据类型,保证了类型安全(4)它是平台4无关的,可移植性(5)可用于基本数据类型6、C++中什么数据分配在栈或堆中,New分配数据是在近

6、堆还是远堆中?答:栈:存放局部变量,函数调用参数,函数返回值,函数返回地址。由系统管理堆:程序运行时动态申请,new和 malloc申请的内存就在堆上7、函数模板与类模板有什么区别?答:函数模板的实例化是由编译程序在处理函数调用时自动完成的,而类模板的实例化必须由程序员在程序中显式地指定。8、动态连接库的两种方式?答:调用一个DLL中的函数有两种方法:1.载入时动态链接(load-timedynamiclinking),模块非常明确调用某个导出函数使得他们就像本地函数一样。这需要链接时链接那些函数所在DLL的导入库,导入库向系统提供了载入DLL时所需的信息及DLL函数定位。2.运行时动态

7、链接(run-timedynamiclinking),运行时可以通过LoadLibrary或LoadLibraryEx函数载入DLL。DLL载入后,模块可以通过调用GetProcAddress获取DLL函数的出口地址,然后就可以通过返回的函数指针调用DLL函数了。如此即可避免导入库文件了9、什么函数不能声明为虚函数?constructor函数不能声明为虚函数。10、在C++程序中调用被C编译器编译后的函数,为什么要加extern“C

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。