c++还有一个小时考试

学校比较不能让人理解,一个学年搞两门编程语言,好吧,c++要考试了,看看我学了一些什么。

(好吧,我至今几乎没有上过c++课。)

1.  #include<iostream>

2.  using namespace std;

一般都要弄这个上去,原因不解释。。

首先不管是c++还是java还是c#都是面向对象的编程语言。

C++的执行效率非常高,不用基于JRE和。NET平台,这点当然不用说。

面向对象,多态继承封装。

C++支持多重继承,而且推出了虚基类处理这些问题。

语言没有好坏,既然是面向对象,我们就从封装多态继承来说一说。

封装:

class MyClass

{

public:

MyClass();

~MyClass();

private:

};

MyClass::MyClass()

{

}

MyClass::~MyClass()

{

}

当然函数定义可以在类里面实现也可以。

(突然想起一个逗比地问题,关于为什么大多数书上要在外部定义,表示才疏学浅,然后我就去问学长。。学长是这么说的,11-笨蛋侦探-我想是因为编程语言本就是由数学语言演变过来的,而定义函数在外面本就是最自然的形式,对在数学上也是这样,完全面向对象而去除面向过程的东西,是令人很难接受的。同一届的这么说-Timi-因为从c过渡过来 大概为了适应部分程序员从c转变到c++ 所以保留了面向过程的部分。陶泽- c++中会把在类内定义的函数隐式的定义成inline函数。黄大神说是增强可读性。

总之没有什么太具体的好处罢了。。)

而且有一个友元函数这么一个东西,可以破坏封装性,设计了这个东西。我估计它存在的意义其实是一种非常让人难过的“继承”,同样扩展了很多功能,我也不多加评论。

看到别人博客上有这么一句话《windows环境多线程编程原理与应用》中解释: 如果将类的封装比喻成一堵墙的话,那么友元机制就像墙上了开了一个门,那些得 到允许的类或函数允许通过这个门访问一般的类或者函数无法访问的私有属性和方法。友元机制使类的封装性得到消弱,所以使用时一定要慎重。友元类的说明将外界的某个类在本类别的定义中说明为友元,那么外界的类就成为本类的“朋 友”,那个类就可以访问本类的私有数据了。

class Me

{

private :

int money;

friend class Wallet;

public:

Me()

{

money=1;

}

};

class Wallet

{

Me zgx;

int getMoney()

{

return zgx.money;

}

};

多态

下面是是别人博客上的

http://blog.csdn.net/hackbuteer1/article/details/7475622

指相同对象收到不同消息或不同对象收到相同消息时产生不同的实现动作。C++支持两种多态性:编译时多态性,运行时多态性。

a、编译时多态性:通过重载函数实现  
  b、运行时多态性:通过虚函数实现。  
  2、虚函数  
 虚函数是在基类中被声明为virtual,并在派生类中重新定义的成员函数,可实现成员函数的动态覆盖(Override) 
  3、抽象类  
 包含纯虚函数的类称为抽象类。由于抽象类包含了没有定义的纯虚函数,所以不能定义抽象类的对象。

(1)区分概念:    重载----同一个类中,相同的函数名字,不同的函数形参(与函数返回值类型的不同无关系;与函数 形参的个数、类型有关系;当形参个数、类型相同时,如一个函数的形参包含某类型的引用/指针,而另一个函数包含同类型形参的const 引用/指针,则二者可以被认为是重载);

覆盖----发生在子类与基类之间,子类与基类之间包含同名同参数的函数,且基类中该函数用virtual修饰时;

隐藏----发生在子类与基类之间,当子类与基类的函数名字相同,但是形参不同(无论基类有没有用virtual修饰);或者子类与基类的函数名字相同,形参相同,但是基类没有用virtual修饰时。

(2)当基类指针指向子类对象   或者  子类指针指向被强制转换后的基类对象时:

覆盖情况的函数该调用哪一个,取决于指向的对象的类型;非覆盖的情况的函数该调用哪一个,取决于指针(引用)的类型。

多态与非多态的实质区别就是函数地址是早绑定还是晚绑定。如果函数的调用,在编译器编译期间就可以确定函数的调用地址,并生产代码,是静态的,就是说地址是早绑定的。而如果函数调用的地址不能在编译器期间确定,需要在运行时才确定,这就属于晚绑定。 那么多态的作用是什么呢,封装可以使得代码模块化,继承可以扩展已存在的代码,他们的目的都是为了代码重用。而多态的目的则是为了接口重用。也就是说,不论传递过来的究竟是那个类的对象,函数都能够通过同一个接口调用到适应各自对象的实现方法。

令人迷惑的隐藏规则 本来仅仅区别重载与覆盖并不算困难,但是C++的隐藏规则使问题复杂性陡然增加。 这里“隐藏”是指派生类的函数屏蔽了与其同名的基类函数,规则如下: (1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual 关键字,基类的函数将被隐藏(注意别与重载混淆)。 (2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual 关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)。

1、有virtual才可能发生多态现象  2、不发生多态(无virtual)调用就按原类型调用

C++纯虚函数

一、定义 
 纯虚函数是在基类中声明的虚函数,它在基类中没有定义,但要求任何派生类都要定义自己的实现方法。在基类中实现纯虚函数的方法是在函数原型后加“=0”    virtual void funtion()=0  二、引入原因 
   1、为了方便使用多态特性,我们常常需要在基类中定义虚拟函数。  
   2、在很多情况下,基类本身生成对象是不合情理的。例如,动物作为一个基类可以派生出老虎、孔雀等子类,但动物本身生成对象明显不合常理。  
 为了解决上述问题,引入了纯虚函数的概念,将函数定义为纯虚函数(方法:virtual ReturnType Function()= 0;),则编译器要求在派生类中必须予以重写以实现多态性。同时含有纯虚拟函数的类称为抽象类,它不能生成对象。这样就很好地解决了上述两个问题。

关于const

const int *m1 = new int(10);

int* const m2 = new int(20);

在上面的两个表达式中,最容易让人迷惑的是const到底是修饰指针还是指针指向的内存区域?其实,只要知道:const只对它左边的东西起作用,唯一的例外就是const本身就是最左边的修饰符,那么它才会对右边的东西起作用。根据这个规则来判断,m1应该是常量指针(即,不能通过m1来修改它所指向的内容。);而m2应该是指针常量(即,不能让m2指向其他的内存模块)。

c++还有一个小时考试,布布扣,bubuko.com

时间: 2024-08-07 00:15:10

c++还有一个小时考试的相关文章

为什么嗑瓜子可以嗑半个小时甚至一个小时以上,看书学习却不可以?

很多人问过毅力类的问题,在此一并回答. 人做事情,都需要有个反馈,反馈的周期越久,感觉上就越困难. 先做个实验,找个空旷地,走直线,二十步,相信大多数人都没有问题.现在闭上眼睛,再走一遍,看看还是直线吗?为什么变难了?(实验时请注意安全,尽量两个人配合) 因为没有反馈. 再来个实验,磕瓜子,题主能磕一个小时无压力.我们换个规则,现在你只能磕,不能吃,瓜子仁留下来.磕一个小时,才把瓜子仁一次吃完.是不是有点无趣了?同样的时间,瓜子仁也没少吃,为什么感觉变了? 因为反馈的周期拉长了. 很多大事情,都

9.6智力题(一)——给定两条绳子,每条绳子燃烧殆尽正好用一个小时,用这两条绳子准确计时15分钟

题目:给定两条绳子,每条绳子燃烧殆尽正好用一个小时,用这两条绳子准确计时15分钟. 注意:这些绳子密度不均匀,因此燃烧掉半截绳子不一定正好用时半个小时. 解答: 1)点燃绳子1一头的同一时候.将绳子2的两头点燃. 2)绳子2燃烧完时,正好过去30分钟. 3)将绳子1的另外一头点燃.開始计时. 4)15分钟后,绳子1燃烧完成.

恢复一个小时前数据

恢复一个小时前数据select *from info_collective as of timestamp sysdate -(1/(24))  where  regional_name like '抚顺%' 注意红色字体 sysdate -(1/(24))  若恢复n小时前数据则修改 sysdate -(n/(24)) //查询出来的数据创建一张新表  create table dept2 as select * from dept;   //怎样将Oracle一张表的多个字段更新到另一张表中

一个小时学会MySQL数据库

一个小时学会MySQL数据库 目录 一.数据库概要 1.1.发展历史 1.1.1.人工处理阶段 1.1.2.文件系统 1.1.3.数据库管理系统 1.2.常见数据库技术品牌.服务与架构 1.3.数据库分类 1.3.1.关系型数据库 1.3.2.非关系型数据库 1.4.数据库规范化 1.4.1. 什么是范式 1.4.2. 三大范式 1.4.3. 范式与效率 二.MySQL介绍 2.1.MySQL概要 2.2.系统特性 2.3.存储引擎 三.快速安装运行MySQL数据库 3.1.使用绿色版 3.1.

shell cat 命令的 不靠谱使用,导致hive 表中的小时数据,每隔几天就会缺失一个小时的

现象:hive 表中的小时数据,每隔几天就会缺失一个小时的,最后发现时在做数据聚合cat的时候,失败,导致: 修改脚本,做下面的方案,解决了: ##merge 5min data into hour data                                                                                                                        cat $datapath/news_5min_$x

一个小时学会Maven

目录 一.为什么要Maven二.安装与配置2.1.官网下载安装包2.2.配置环境变量2.3.本地仓储配置2.4.中央仓库配置2.5.命令行创建maven项目2.6.Jetty运行Web项目2.7.在tomcat中运行三.Maven概要3.1.Maven名词解释3.2.Maven的生命周期3.3.Maven标准工程结构3.4.Maven的"约束优于配置"3.5.Maven的版本规范3.6.项目骨架Maven Archetype3.7.maven的项目对象模型四.IDE中使用Maven(I

Get了这个外挂级神器,一个小时的工作我竟然十分钟就做完了

经常使用PPT的朋友们有没有发现,其实PPT功能并不算强大,只能做一些简单的操作,每次做PPT都会因为素材资源和设计的问题浪费很多时间,不知不觉上班时间都过去啦. 有一个PPT插件叫iSlide,堪称外挂级神器!相信我,它可以解决你的大多数PPT难题,不用再羡慕别人早早下班啦,你也可以十分钟做完一个小时的工作内容!下面我们一起来详细了解这个神器吧. iSlide是一个全面型的实用插件,几乎涉及到了PPT制作的方方面面,它号称"让PPT设计简单起来",不管你是什么级别,它都可以让你玩转P

一个小时搭建一个全栈Web应用框架(上)

把想法变为现实的能力是空想家与实干家的区别.不管你是在一家跨国公司工作,还是正在为自己的创业公司而努力,那些有能力将创意转化为真正产品的人,都具有宝贵的技能并拥有明显的实力.如果你能在不到一个小时的时间里创建一个全栈的Web应用,那么你就有能力为自己下一个伟大的想法迅速的的创建一个简单的MVP,或者在工作中快速构建一个新的应用程序. 本文介绍了创建一个简单的全栈Web应用所需的步骤,其中包括一个Python服务器和一个React前端.你可以轻松的在其基础上进行构建,根据你的实际需求进行修改,或是

jackson 转换 yyyy-MM-dd格式 少了一个小时问题解决(仅限中国)

如果你在你的实体类上面指定了@JsonFormat(pattern = "yyyy-MM-dd",timezone="GMT+8") 然后发现换成json后 小于 1991-09-14 22:59:59 这个时间的 每年的5.6.7.8.9 月 小于 09-14 22:59:59 这个时间都少一个小时 只需要把修改成@JsonFormat(pattern = "yyyy-MM-dd",timezone="Asia/Shanghai&qu