标准c++库中提供六种排序方法:qsort(), sort(),stable_sort(), partial_sort(), list::sort(), set/multisetqsort()比sort()慢并且不能排序构造函数、虚函数,一般不推荐使用。写一个比较函数传递给qsort()很麻烦;后五...
分类:
其他好文 时间:
2014-08-01 12:58:11
阅读次数:
278
虚函数是C++中实现多态的一种方法,父类A的一个函数声明为虚函数,在子类B中覆盖定义之后,当在调用的时候使用A*a=new B(),此时调用对应的那个虚函数的名字,则会执行B中的函数。当父类中没有定义虚函数的实体时候,virtual void foo()=0;这个函数就是一个纯虚函数,对应的父类就是...
分类:
编程语言 时间:
2014-07-31 20:40:37
阅读次数:
251
本文分析虚函数的小秘密,通过几个case说明为了支持虚函数,应该有什么样的约定,生成什么样的代码。...
分类:
其他好文 时间:
2014-07-31 17:10:36
阅读次数:
166
c++纯虚函数是C++面向对象设计的重要组成部分。纯虚函数在函数参数后边添加“=0”实现。class Test{ ... void virtual Fun() =0; ... }上述Fun函数是纯虚函数,拥有纯虚函数的类是抽象类,不能实例化,如Test这让人想起C#或者Jav...
分类:
编程语言 时间:
2014-07-31 12:16:56
阅读次数:
227
在前一节中曾提到过,C++中运行时的多态性主要是通过虚函数来实现的,而编译时的多态性是由函数重载和运算符重载来实现的。这一系列我将主要讲解C++中有关运算符重载方面的内容。在每一个系列讲解之前,都会有它的一些基础知识需要我们去理解。而运算符重载的基础就是运算符重载函数。所以今天主要讲的是运算符重.....
分类:
编程语言 时间:
2014-07-31 02:20:35
阅读次数:
325
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
多态也是C++中的一个重要的方面,多态和动态类型,虚函数本质上是指相同的事情。
1 虚函数
类中的成员函数原型前面加上virtual 表面这个函数是个虚函数。虚函数的目的是为了在继承它的派生类中重新定义这个函数,以便于通过基类的指针或引用在运行时对派生类的函数进行调用。
2 派生类和虚函数
派生类一般情况下要重定义所继承的虚函数,有几个注意事项。
虚函数的声明必须和基类中...
分类:
编程语言 时间:
2014-07-26 15:31:24
阅读次数:
265
封装,继承,多态是C++的三大基本概念,这里着重总结一下继承相关的东西
1 类派生列表
类派生列表指定派生类要继承的基类,派生列表中有一个或者多个基类如:
class B : public A1,protected A2,private A3
但是单继承时最常见的,多继承不多见
2 派生类的定义
派生类继承时,会包含父类的所有成员,即便私有成员不能被访问。父类中的虚函数...
分类:
编程语言 时间:
2014-07-26 01:56:26
阅读次数:
296