异常处理部分:

23. 在c++的异常处理中,除了提供异常的关键字语法支持以外,其标准库中支持异常处理而封装异常类也很好的为应用程序中异常处理判断使用提供直接的帮助。C++语言中针对异常处理提供了三个关键字,分别为try、throw与catch。C++应用程序中通过这三个关键字实现机制组合来实现异常的处理。try体中可以直接抛出异常,或者在try体中调用的函数体中间接的抛出。注意catch是接thorw出来的数据的,数据类型上要兼容。

预处理及内存管理部分:

24. C语言提供的预处理功能有哪些:
答:宏定义,文件包含和条件编译。

25. include的使用方式:
答:include 如果包含的文件名在尖括号内,则为标准头文件,会在预定义的位置集进行查找。位置集可有环境变量或命令行修改。引号中为自定义头文件,查找始于源文件所在路径,一层层找直到系统文件目录。

26. 如何申请以及释放空间:
答:int *p; p=new int; *p=100; delete p; 注意如果要对这一内存地址进行操作,需要使用*号。

27. 什么是虚函数和纯虚函数:
答:虚函数用来建立抽象模型,从而达到方便系统扩展的目的,纯虚函数是指标明不具体实现的虚函数,是一种特别的虚函数。虚函数必须是基类定义的非静态函数,可以是protected活着public的。在一个类中,虚函数后面加上=0;就声明了纯虚函数,含有纯虚函数的类就是抽象类,不能生成对象。

28. 用*定义指针,c++提供了一种特殊的指针类型void*,可以保存任何类型对象的地址,使用时需要强制类型转换为特定类型。

29. C++语言强制要求指向const对象的指针也是const的,但并不是指此指针不能指向别处,const指针可以指向其他的const对象。具体的区分方式为,const double * ptr,指的是ptr指向的double不能修改,而double * const ptr则是指此指针指向的地址不能修改,地址的值可以修改。注意const的位置。

30. 函数指针与指针函数的区别:
答:函数指针是一个指向函数的指针,指针函数是指返回值为指针的函数。

31. 什么是this指针:
答:在调用成员函数时,编译器会隐含地插入一个参数,这个参数就是this指针,指向当前对象本身,表示当前对象的地址。

32. 值传递与引用传递:
答:从名字就能看出来,值传递传递的是值的副本,而引用传递传递的是地址。

33. 指针和引用的区别:
答:指针是一个实体,引用是别名,引用时直接使用无需加*,引用只能在定义时被初始化一次,引用没有const,sizeof结果不同。

面向对象与类部分:

34. 面向对象的特征是什么:
答:面向对象三要素:封装,继承,多态。封装,将抽象得到的数据和行为相结合,形成类,使用者不必了解具体细节,通过外部接口和访问权限来使用类成员,增强安全性和简化编程。继承使一个类可以使用现有类的全部功能,使其可以直接使用另一个对象的属性和方法并加以扩展。多态允许将父对象设置成为和一个或多个字对象相等的技术,赋值后,父对象可以根据当前赋值给他的字对象的特性以不同的方式运行。多态使得能够利用同一基类的指针饮用不同类的对象,以及根据所引用对象的不同,以不同的方式执行操作。多态是在c++中是通过虚函数实现的。

35. 类和结构的区别:
答:类没实例化前不是对象,实例化的类存在堆中,结构存在栈中,结构的执行效率较高。结构没有析构函数,不能继承。C中的结构不能有方法,C++可以有。

36. 抽象类及其用途:
答:抽象类可以提供多个派生类共享基类的公共定义,可提供抽象方法,也可提供非抽象方法,不能实例化,必须通过继承由派生类实现其抽象方法,如果派生类没有实现其全部抽象方法,派生类也必须声明为抽象类,派生类用覆盖overriding来实现抽象方法。注意,非抽象类也可以有虚函数。

37. 成员变量的访问方式:
答:private,protected和public。

38. static静态成员:
答:静态成员可以独立访问,不需要创建实例,被类的所有对象所共享,包括派生类。类的静态方法只能访问类的静态成员。

39. 多态有动态多态,静态多态,函数多态和宏多态等。平时所指多态为动态多态,基于继承和虚函数实现。类的多态通过覆盖来实现,而函数的多态通过重载来实现。

40. static静态成员:
答:静态成员可以独立访问,不需要创建实例,被类的所有对象所共享,包括派生类。类的静态方法只能访问类的静态成员。

41. 虚函数的作用:
答:虚函数用来实现动态联编,当程序发现关键字virtual后,会自动进行动态联编处理,即在程序运行时选择合适的成员函数。

42. 构造函数与析构函数调用顺序:
答:全局对象的构造函数在main之前调用,析构函数在main之后,全局变量间的先后顺序以定义顺序为准。局部变量在程序执行到定义语句处调用。静态局部变量同样在程序第一次执行到定义语句时调用。构造函数的调用顺序为:调用基类的构造函数->调用成员对象的构造函数->调用自身的构造函数。构造函数的调用次序完全不受构造函数初始化列表的表达式中的次序影响,与基类的声明次数和成员对象在函数中的声明次序有关

C++ 基础知识复习(二)的更多相关文章

  1. Java JDBC的基础知识(二)

    在我的上一篇Java JDBC的基础知识(一)中,最后演示的代码在关闭资源的时候,仅仅用了try/catch语句,这里是有很大的隐患的.在程序创建连接之后,如果不进行关闭,会消耗更多的资源.创建连接之 ...

  2. LeetCode刷题191130 --基础知识篇 二叉搜索树

    休息了两天,状态恢复了一下,补充点基础知识. 二叉搜索树 搜索树数据结构支持许多动态集合操作,包括Search,minimum,maximum,predecessor(前驱),successor(后继 ...

  3. Ajax基础知识(二)

    接上一篇  Ajax基础知识(一) 在上一篇博客里,抛弃了VS中新建aspx页面,拖个button写上C#代码的方式.使用ajax的方式,异步向服务器请求数据.我们让服务器只简单的返回一个" ...

  4. HTTP基础知识(二)

    接着上一章的内容:HTTP基础知识(一)   二.简单的HTTP协议 1.客户端:请求访问文本或图像等资源的一端称为客户端: 服务器端:提供资源响应的一端   2.以百度为例子 这是请求头: 在起始行 ...

  5. JavaScript进阶【三】JavaScript面向对象的基础知识复习

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. ZYNQ笔记(0):C语言基础知识复习

    ZYNQ的SDK是用C语言进行开发的,C语言可以说是当今理工类大学生的必备技能.我本科学C语言时就是对付考试而已,导致现在学ZYNQ是一脸懵逼.现在特开一帖,整理一下C语言的基础知识. 一.定义 1. ...

  7. XML的相关基础知识分享(二)

    前面我们讲了一下XML相关的基础知识(一),下面我们在加深一下,看一下XML高级方面. 一.命名空间 1.命名冲突 XML命名空间提供避免元素冲突的方法. 命名冲突:在XML中,元素名称是由开发者定义 ...

  8. python基础知识(二)

    以下内容,作为python基础知识的补充,主要涉及基础数据类型的创建及特性,以及新数据类型Bytes类型的引入介绍

  9. Android中的一些基础知识(二)

    这几天在回顾Android的基础知识,就把一些常见的知识点整理一下,以后忘了也可以翻出来看一看. 简单介绍一下Activity的生命周期 在API文档中对生命周期回调的函数描述的很详细,这里我只是翻译 ...

  10. spring 基础知识复习

    spring是一个分层架构,由 7 个定义良好的模块组成.Spring 模块构建在核心容器之上,核心容器定义了创建.配置和管理 bean 的方式. 组成spring框架的每个模块(或组件)都可单独存在 ...

随机推荐

  1. java高新技术-操作javaBean

    1. 对javaBean的简单内省操作 public class IntroSpectorTest { public static void main(String[] args) throws Ex ...

  2. signalr遇到的问题汇总

    1.signalr不会触发 hub类的连接事件和断开连接事件 解决:当时因为我引用的是最新的类库 .当时想到的是类库版本问题.就将他换成官方demo一模一样 发现还是不行..然后用官方demo的客户端 ...

  3. foreach statement cannot operate on variables of type 'System.Web.UI.WebControls.Table' because 'System.Web.UI.WebControls.Table' does not contain a public definition for 'GetEnumerator'

    错误:foreach statement cannot operate on variables of type 'System.Web.UI.WebControls.Table' because ' ...

  4. 浅谈Android中Activity的生命周期

    引言 我想对于Android开发人员来说,Activity是再熟悉不过了,今天我们就来探讨下Activity的生命周期.熟悉的掌握Activity对于开发健壮的Android应用程序来说至关重要.下面 ...

  5. PHP常用数据库代码汇总

    连接MYSQL //MYSQL数据库配置 define(DB_HOST, '127.0.0.1'); define(DB_USER, 'user'); define(DB_PASS, 'pass'); ...

  6. Javascript中闭包问题(转载)

    学习Javascript闭包(Closure)   作者: 阮一峰 日期: 2009年8月30日 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现 ...

  7. 微信 5.3 for iPhone已放出 微信iphone版更新下载

    就在几个小时前,微信发布了更新,本次只放出微信 5.3 for iPhone,距离发布微信5.3内测版也就几天时间.和往常一样微信iphone版先发布,微信android版延后发布,微信看重的是ios ...

  8. Linux下忘记MySQL的root密码的解决方法

    恢复方法之一 1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库. 因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的 状态下,其他的用户也 ...

  9. php生成随机字符串

    <?php echo make_random_str(); function make_random_str() { $arr = ["A","B",&q ...

  10. PHP 版去bom头

    原理: 找出文件前3个字符 如果它们对应的ASCII 值分别是  239,187,191 则判断为bom头,去掉前3个字符. 代码实现如下: $basedir = isset($_GET['dir'] ...