C++重要知识点整理-思考

当你看到标题,有兴趣打开本文,那我推测,你应该是准备考“二级C++等级考试”。如果我猜对了,希望在下文对你的考试有所帮助;如果我猜错了,你不妨也用短暂的时间看看,这在编程实践中也是需要注意的,你就当复习、加深,找共鸣吧。

(一)构造函数——从最易遇到的问题说起

(1)构造函数的初始化列表

1)构造函数:Point(float a,float b){x=a;y=b;}                     ①

2)用初始化列表改写:Point(float a,float b): y(b), x(a){}    ②

1.1   上面是同一个构造函数的两种写法。其中x、y是提前定义好的变量,a、b是构造函数的参数。

1.2   由①②推广出Point(float a,float b): y(b){x=a;} 成立 ③

1.3    {}是构造函数体。

:后面的y(b),x(a)就是所谓的初始化列表。此处有个考点,在构造函数体中,已经初始化的成员,在初始化列表中不可重复初始化;反过来说,在构造函数体中没有初始化的成员,必须在初始化列表中写出,并特别注意在初始化列表前需用“:”冒号做分隔和标示。

特注:当x或y是被定义为常数据时,常数据只能用初始化列表进行初始化(②或③的形式)

class Point

{

private:

float x,y

public:

Point(float a,float b): y(b), x(a){}   ’或Point(float a,float b): y(b){x=a;}

’不可错写成Point(float a,float b){x=a;y=b}

}

(2)继承关系下的构造函数的写法

class Person

{

private:

char name

int age

public:

Person(char a,int b):name(a),age(b){}

}

class Student : public Person

{

float score    //默认为(Private)私有成员

public:

Student(char x,int y,float z):Person(x,y),score(z){}

}

大家对比不难发现,这里的特点是:

(1)派生类(子类)Student的初始化列表中[Person(x,y),score(z)],按照基类的构造函数,将对应参数直接带给基类中。

(2)再对派生类中新派生的成员逐一初始化,当然,新派生的成员的初始化可以再构造函数体“{}”中,也可以再初始化列表(“:”之后)中。

(二)继承——易记不易懂(不好理清)

(1)继承的定义

定义:子类从父类那里继承有用的数据成员和成员函数。

(2)继承的分类

单继承和多继承

单继承:只有一个直接父类,例class A : public B,读作“类A公有继承于类B(A为子类,B为父类)”。

多继承:有两个及以上多个直接父类,例class A:public B,public C,读作“类A公有继承与类B同时公有继承于类C”(第二个public可省略不写)。

(3)类成员访问权限

类成员有三种访问权限:public(公有的)、private(私有的)、protected(保护的)

class Example

{

private:

?     //这里的成员只能使用于本类,不能被派生类访问,本类的对象也不能直接访问

protected:

?     //这里的成员可以被本类和派生类直接访问,但本类的对象不能直接访问

public:

?     //这里的成员既可以被本类和派生类直接访问,也可以被本类的对象直接访问

};


表 派生模式对继承成员访问权限的影响

继承

方式

基类

public

基类

private

基类

protected

说明
public public private protected 访问权限不变
private private private private 全部变成私有的
protected protected private protected 公有的变成保护的,其余不变

注:类的对成员的访问,就是拿来就用,为了避免成员明的冲突,可以使用作用域限制符“: :”。

这里需要切记一句话:任何类的对象,只能访问该类的公有成员。

【对这句话的辩证理解是:类实例化(new)的对象,不能直接访问私有成员(private)和保护成员(protected),而对象对这些成员的使用是通过公有成员函数在类体中操作的。也就是说,如果类里面的非公有成员通过现有的公有成员函数没法使用,这时,只能通过修改类里面的内容,重新建立调用机制来使用。成员包括数据成员(我们常在类中定义的变量或常变量)和成员函数;如果子类与父类是公有继承的关系,那么父类的公有成员同时也是子类的公有成员。】

整理一下“访问”的问题:

成员访问1)采用:对象名称.成员名称 或 引用名.成员名称 或 指针—>成员名称。

2)类访问成员:直接使用“数据成员变量名称”、“成员函数名称”进行调用。

(三)推荐和共享

一本好书,能得到适当的点拨,能把简单的事情简单化(相对于有的书是,简单的事情复杂化,弄得读者一头雾水,最后结论是这个知识真难),带领读者理解自然流畅地获取知识。再次,推荐一本书《C/C++程序设计实用教程》王大伦,清华大学出版社 2006.

C++是对C的扩展,可以算是一个增强版。本书更多说的是C++,因为,说了C++就包括了C在内,至于不同的地方,有简单的对比提示,而且不同点实际是很少的。本书不管是用于应试还是当着对这两门语言的基础进行加深,都是挺不错的,因为,其中的知识点规整、明晰,举例也是很干练的,相当具有代表性。本文中的例子就来自于本书。

时间: 2024-12-26 08:03:19

C++重要知识点整理-思考的相关文章

数据库设计教程系列——相关知识点整理

一.教程概述 此数据库设计教程是笔者参考网上资料.相关书籍,以及加上自己多年做数据库设计相关工作的经验积累写就. 数据库设计教程在网上已经有大量类似的资料,并且该领域有不少专业书籍,珠玉在前,心有戚戚. 但这作为唯心六艺之一,我还是希望能够在整理知识的同时,写出自己的一些内容,如果能够对读者 有所帮助,那就最好不过了,谢谢. 本教程主要基于关系型数据库进行讲解,对于维度数据库也会视情况有所涉猎. 下面是整个教程涉及的知识点整理,在撰写教程的过程中,如果有改动,也会调整更新此图. 二.知识点整理

asp.net mvc 3.0 知识点整理 ----- (2).Controller中几种Action返回类型对比

通过学习,我们可以发现,在Controller中提供了很多不同的Action返回类型.那么具体他们是有什么作用呢?它们的用法和区别是什么呢?通过资料书上的介绍和网上资料的查询,这里就来给大家列举和大致的概括下. (1). ActionResult(base):最基本的Action类型,返回其他类型都可以写ActionResult. (2). ContentResult:返回ContentResult用户定义的内容类型. public ActionResult Content() { return

【知识点整理】Oracle中NOLOGGING、APPEND、ARCHIVE和PARALLEL下,REDO、UNDO和执行速度的比较

[知识点整理]Oracle中NOLOGGING.APPEND.ARCHIVE和PARALLEL下,REDO.UNDO和执行速度的比较 1  BLOG文档结构图 2  前言部分 2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① 系统和会话级别的REDO和UNDO量的查询 ② NOLOGGING.APPEND.ARCHIVE和PARALLEL下,REDO.UNDO和执行速度的比较(重点)   Tips: ① 本文

【Android 面试基础知识点整理】

针对Android面试中常见的一些知识点整理,Max 只是个搬运工,感谢本文中引用文章的各位作者,给大家分享了这么多优秀文章,对于其中的解析,是原作者个人见解,有错误和不准确的地方,也请大家积极指正. 本文将持续更新,同时我也将其放在Github上:Point-of-Android 同时可以看Max的个人博客:海上钢琴师 Android中的异步任务机制 Android中AsyncTak的使用与源码分析 http://blog.csdn.net/bboyfeiyu/article/details/

·DP」知识点整理

一.最长公共子序列(LCS Longest Common  Subsequence) 第一,先说区别,最长公共子串和最长公共子序列是不一样的. 最长公共子串不许是连续的,而最长公共子序列可以是不联系的. 网络上解释的子序列: 一个字符串S,去掉零个或者多个元素所剩下的子串称为S的子序列.最长公共子序列就是寻找两个给定序列的子序列,该子序列在两个序列中以相同的顺序出现,但是不必要是连续的. 例如 X=ABCBDAB Y=BDCABA BCA是X和Y的一个公共子序列,但是不是X和Y的最长公共子序列,

Python--matplotlib绘图可视化知识点整理

Python--matplotlib绘图可视化知识点整理 强烈推荐ipython 原文:http://michaelxiang.me/2016/05/14/python-matplotlib-basic/ 无论你工作在什么项目上,IPython都是值得推荐的.利用ipython --pylab,可以进入PyLab模式,已经导入了matplotlib库与相关软件包(例如Numpy和Scipy),额可以直接使用相关库的功能. 本文作为学习过程中对matplotlib一些常用知识点的整理,方便查找.

asp.net mvc 3.0 知识点整理 ----- (4).HtmlHelper(Html 辅助方法)介绍

在View视图中,Html的类型是System.Web.Mvc.HtmlHelper<T>, 所有的辅助方法都需要和ModelState交互.那么,ModelState是什么呢?它是模型绑定的附属品,并且存有模型绑定期间检测到的所有验证错误.以及用户提交用到来更新模型的原始值.本篇博文,我们主要来介绍下一些常用的html辅助方法的主要作用和使用方法. 1. Html.BeginForm()和Ajax.BeginForm().   Html.BeginForm(): 同于传统的表单提交,主要是生

asp.net mvc 3.0 知识点整理 ----- (3).asp.net mvc 3 和asp.net mvc 4 对比

asp.net mvc的版本更新很快,每个版本都在前一个版本的基础上,进行性能的优化和功能的完善和提升. 以下,便是我对比了下两个版本,发现最基本的差异.(更新补充中..) 一.关于配置类Global.asax的不同 为了较少配置类的杂乱代码,asp.net mvc 4 中 将Global.asax文件中的内容单独到 App_Start 下的几个配置文件中去. 在asp.net mvc 3 中: public static void RegisterGlobalFilters(GlobalFil

第一次提交《软件测试》第1、2章知识点整理

<软件测试>第1.2章知识点整理 第1章 软件测试的背景 1.1 臭名昭著的软件错误用例研究 1.1.1 迪斯尼的狮子王 1994-1995(兼容性) 1.1.2 英特尔奔腾浮点除法缺陷 1994(缺陷处理) 1.1.3 美国航天局火星极地登陆者号探测器 1999(集成测试) 1.1.4 爱国者导弹防御系统 1991 (长时间测试的压力) 1.1.5 千年虫问题 1974 (算法设计) 1.1.6 危险的预见 2004 (难保证软件的正确性) 1.2 软件的缺陷是什么 1.2.1 软件失败的术