您的位置:首页 > 编程语言 > C语言/C++

C++之高频面试题目有整理

2018-04-08 15:40 381 查看

1、面向对象编程的特点

封装、继承、多态。

  封装:把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。(优点:可以隐藏实现细节,使得代码模块化)

  继承:可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。(优点:可以扩展已存在的代码模块(类))

  多态:一个类实例的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。虽然针对不同对象的具体操作不同,但通过一个公共的类,这些操作可以通过相同的方式被调用。

  多态实现的两种方式:父类指针指向子类对象或将一个基类的引用类型赋值为它的派生类实例。(重要:虚函数 + 指针或引用)

构造函数、复制构造函数、析构函数、赋值运算符不能被继承。


2、计算机加载程序包含了哪几个区

一个由C/C++编译的程序占用的内存分为以下几个部分:

  (1)栈区(stack):—由编译器自动分配释放,存放函数的参数值,局部变量的值等。可静态也可动态分配。其操作方式类似于数据结构中的栈。 

  (2)堆区(heap):一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。动态分配。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。 

  (3)全局区(静态区):—程序结束后由系统释放,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域;未初始化的全局变量和静态变量在相邻的另一块区域(BSS,Block Started by Symbol),在程序执行之前BSS段会自动清0。 

  (4)文字常量区:—程序结束后由系统释放,常量字符串就是放在这里的。  

  (5)程序代码区:—存放函数体的二进制代码。



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: