异常处理部分:

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. ubuntu搭建shad(-_-)owscoks(影梭)

    准备步骤 apt-get updateapt-get install python-gevent python-pippip install shadowsocks 新建一个json文件内容如下,文件 ...

  2. sp_executeSql 用法

    今天遇到了一个难题 就是把 一个拼接sql语句 的返回值 赋值给一个变量 经研究 要用sp_executeSql这个存储过程 据说是从sql 2005才开始有的 代码如下: declare @str ...

  3. Python笔记(3)迭代器与生成器

    参考自:http://www.cnblogs.com/huxi/category/251137.html 迭代器 迭代器是访问集合内元素的一种方式,他不能倒退只能一直迭代下去.可以写到for循环in后 ...

  4. oracle误删表解决方案

    ·delete(删除一条记录)·drop或truncate删除表格中数据 1.delete误删除的解决方法原理:利用oracle提供的闪回方法,如果在删除数据后还没做大量的操作(只要保证被删除数据的块 ...

  5. SQL 事务回滚

    事务(Transaction)是并发控制的单位,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位.通过事务,SQL Server能将逻辑相关的一组操作绑定在一起,以便服 ...

  6. python迭代器和生成器(3元运算,列表生成式,生成器表达式,生成器函数)

    1.1迭代器 什么是迭代器: 迭代器是一个可以记住遍历的位置对象 迭代器对象从集合的第一个元素元素开始访问,直到所有元素被访问完结束,迭代器只能往前不会后退. 迭代器有两个基本方法:iter ,nex ...

  7. (转)MySQL索引原理及慢查询优化

    转自美团技术博客,原文地址:http://tech.meituan.com/mysql-index.html 建索引的一些原则: 1.最左前缀匹配原则,非常重要的原则,mysql会一直向右匹配直到遇到 ...

  8. 机器学习中的相似性度量(Similarity Measurement)

    机器学习中的相似性度量(Similarity Measurement) 在做分类时常常需要估算不同样本之间的相似性度量(Similarity Measurement),这时通常采用的方法就是计算样本间 ...

  9. tomcat共享lib里面的jar包

    参考:http://shitouququ.blog.51cto.com/24569/1255094 1.在tomcat根目录下新建shared/lib目录结构,将项目的jar包放在此目录下,记得将项目 ...

  10. Java类中各种静态变量的加载顺序的学习

    最近在补<thinking in java>...有一节提到了加载类需要做的一些准备...我照着书本敲了一下代码...同时稍微修改了一下书本上的代码.... package charpte ...