通过继承能够从已有的类派生出新的类,而派生类继承了基类的特征,包括方法。正如继承一笔财产要比自己白手起家容易一样,通过继承派生出的类通常比设计新类要容易得多。下面是可以通过继承完成的一些工作。
①可以在已有类的基础上添加功能。
②可以给类添加数据。
③可以修改类方法的行为。
C++有三种继承方式:公有继承、保护继承和私有继承。
一、公有继承
公有继承是最常用的方式,它建立一种i...
分类:
其他好文 时间:
2014-07-28 16:32:53
阅读次数:
506
1、静态联编和动态联编
将源代码中的函数调用解释为执行特定的函数代码块被称为函数名联编。在C语言中,这非常简单,因为每个函数名都对应于一个不同的函数。在C++中,由于函数重载的缘故,这项任务更复杂。编译器必须查看函数参数以及函数名才能确定使用哪个函数。然而,C/C++编译器可以在编译过程中完成这种联编。在编译过程中进行联编称为静态联编,又称为早期联编。不过虚函数使这项工作变得更困难。因为...
分类:
其他好文 时间:
2014-07-28 16:32:13
阅读次数:
216
多重继承描述的是有多个直接基类的类。多重继承会带来两个主要的问题:
①从两个不同的基类继承同名方法;
②从两个或更多相关基类那里继承同一个类的多个实例。例如:
class A
{
private:
string name;
int id;
public:
virtual void f();
...
};
class B:public A
{
private...
分类:
其他好文 时间:
2014-07-28 16:32:06
阅读次数:
237
1.构造函数的职责
构造函数中只进行那些没有实际意义的初始化,因为成员变量的“有意义”的值大多不在构造函数中确定。
可以的话,使用Init()方法集中初始化为有意义的数据。
优点:排版方便,无需担心类是否初始化。
缺点:
1)在构造函数中不易报告错误,不能使用异常;
2)操作失败会造成对象初始化失败,引起不确定状态;
3)构造函数内调用虚函数,调用不会派发到子类实现中,即使当前没有子...
分类:
编程语言 时间:
2014-07-28 16:23:43
阅读次数:
265
class Parent{ int age; String name; public Parent(String name, int age){ this.name = name; this.age = age; } public void writeWay(){ ...
分类:
其他好文 时间:
2014-07-28 15:19:03
阅读次数:
182
/*异常的注意事项:1,子类在覆盖父类方法时,父类的方法如果抛出了异常,那么子类的方法只能抛出父类的异常或者该异常的子类。2,如果父类抛出多个异常,那么子类只能抛出父类异常的子集。简单说:子类覆盖父类,只能抛出父类的异常或者子类或者子集。注意:如果父类的方法没有抛出异常,那么子类覆盖时绝对不能抛。子...
分类:
编程语言 时间:
2014-07-28 14:48:33
阅读次数:
205
/*样例1: class Parent{ int num = 3; } class Child extends Parent{ int num = 4; }*//*样例2:class Parent{}class Child extends Parent{ int num...
分类:
编程语言 时间:
2014-07-28 14:36:43
阅读次数:
214
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------面向对象的三大特性(精华):(成员变量、方法)封装、继承、多态。一、封装1.为什么需要封装?根据以前学的内容,假如我声明一个student类,里面有...
分类:
其他好文 时间:
2014-07-28 11:19:40
阅读次数:
184
在C++中,一般的架构设计都是基于多态,基于接口编程。一般的是基类提供接口,子类根据具体的业务逻辑来实现接口,以此来提供程序设计的过程中的可注入性,提高灵活性,但是事实可能不经如此。引入了多态,其实也就是引入了耦合,其强制规定了继承基类和接口的形式,这在整体继承体系中都是不可以更改的。C++0x中的bind函数和function模板类为我们提供了很好的设计解决方案,提供多态基于函数对象,其只和函数的返回值和参数有关。陈硕老师称其为Object-base编程,通过对象来完成功能注入。拳拳到肉(陈老师原话)。...
分类:
其他好文 时间:
2014-07-27 23:41:15
阅读次数:
383
重写(override)特点:1、要有继承关系2、方法原型要一致(修饰符、返回类型、方法名、参数列表一致)3、加上override关键字,重写父类的方法(该父类方法要有virtual、abstract进行修饰) /// /// 狗类(父类) /// class Dog { public str...
分类:
其他好文 时间:
2014-07-27 23:02:20
阅读次数:
244