C++面试宝典2012版
在C++编程中,`new`、`delete`、`malloc`和`free`都是与内存管理相关的操作,但它们有着不同的特性和使用场景。`new`和`delete`是C++特有的运算符,负责动态内存的分配和释放,并且能够处理对象的构造和析构过程。`malloc`和`free`是C语言中的函数,仅负责内存的分配和释放,不涉及对象的生命周期管理。对于非内置类型,使用`malloc`和`free`可能无法正确地初始化和清理对象。 `delete`和`delete[]`的区别在于,`delete`用于释放单个对象的内存,只调用一次析构函数;而`delete[]`用于释放数组,会为数组中的每个元素调用析构函数。例如,动态分配的数组`MemTest*mTest1=new MemTest[10]`和`int*pInt1=new int[10]`应该用`delete[]`释放,单个对象`MemTest*mTest2=new MemTest`和`int*pInt2=new int`则用`delete`。 C++和C语言的共同点在于它们都属于C家族,共享许多语法基础,如变量、函数、指针等。不同之处在于C++是面向对象的语言,支持类、对象、继承、多态等特性,而C语言是面向过程的,不包含这些特性。C++还引入了模板、异常处理、命名空间等高级特性。 继承是面向对象编程的核心概念之一,优点在于代码复用和扩展性。通过继承,子类可以从父类继承属性和方法,实现代码的重用。然而,继承也有其缺点,如静态绑定可能导致运行时的灵活性降低,且父类的修改可能影响到所有子类,这称为“继承税”。 C++的面向对象特性主要包括封装、继承和多态。封装隐藏了对象的内部细节,提供公共接口供外部访问,增强了数据的安全性。继承允许创建新的类(子类)基于现有类(父类),从而实现代码复用。多态使得不同的对象对同一消息作出不同的响应,增强了程序的灵活性。 析构函数是C++中负责对象清理工作的方法,子类析构时通常需要调用父类的析构函数,确保父类资源也能被正确释放。析构函数的调用顺序是自下而上的,即先执行派生类的析构函数,再执行基类的析构函数。 多态性是C++的一大特色,分为编译时多态(函数重载、运算符重载)和运行时多态(虚函数、纯虚函数)。虚函数允许子类重写基类的函数,实现动态绑定。纯虚函数则是抽象类的标志,不提供具体实现,用于定义接口,使得子类必须实现这些函数。 函数`func(x)`的返回值与位操作有关,该循环计算`x`二进制表示中1的个数。每次循环,`x = x & (x - 1)`将消除`x`最低位的1,直到`x`变为0。`countx`记录了迭代次数,即1的个数,因此`func(x)`的返回值是`x`二进制表示中1的个数。
剩余63页未读,继续阅读
- yinix2012-08-06还是比较全面的,谢谢分享。
- A3692013-11-11这资料真心不错,感谢楼主分享!感谢CSDN提供的平台!
- 粉丝: 3
- 资源: 40
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助