随笔分类 - C++ 必知必会
摘要:template method 模式,模板方法模式 其实他和C++模板没有关系。 前者是提供的为派生类设计者提供清晰指示的一种方法,这个事实表示“如何去实现基类所规定的契约” 基类可以自由的通过公有成员函数指定与外界的契约关系,并通过受保护的成员函数为派生类的行为指明额外的细节,私有成员函数也可以用做类实现的一部分。一般数据成员应该是私有的。 如果积累的成员是非虚拟的,那么积累的设计者就为以该积累...
阅读全文
摘要:重载与重写其实没有关系,只是在使用过程中,由于某些函数的命名的问题不注意,让我们产生了不计其数的bug 当位于同一个作用域中的两个或者更多个函数名字相同但是参数数目不同,或者数目相同但参数类型不一样的函数相互之间就会发生重载。即函数在调用的时候,会按照参数列表优先选择最匹配的函数进行调用;—— 这样就形成了,同一个函数名称(操作方法),按照其传进的参数不同(原料不同), 得到不同的函数的调用(结果...
阅读全文
摘要:继承标准STL的函数对象 1: struct PopLess : public atd::binary_function 2: { 3: bool operator() { const State &a, const State &b } const 4: { 5: return popless(a,b); 6: } ...
阅读全文
摘要:这一点与指向成员的指针类似,其实现可能更加复杂,因为成员函数同时还存在虚拟函数,需要动态绑定执行动作。当然这种属性是属于函数本身的,此处表达的是指针不涉及函数的属性问题。 1: class shape 2: { 3: public: 4: // void moveTo(point newLocation); 5: bool validate(); 6: //… 7: } 8: 9: class circle:: public shape 10: { 11: public: 12: //… 13...
阅读全文
摘要:指向类成员的类成员的指针说是“指针”,其实是不合适的,因为他既不包含地址,其行为也不像指针常规的指正,包含地址,对其解应用可以得到该指针包含地址所指向的对象 1: int a = 12; 2: int pi = &a; 3: *pi = 0; 4: a = *ip;但是对于指向类成员的指针不是内存中特定的位置,他指向的是一个类中的特定成员的位置,而不是指向一个特定对象的成员。一般常见的做法是存储一个类成员对象的偏移地址--相对类起始地址的。 1: class A 2: { 3: public: 4: // … 5: int...
阅读全文
摘要:数据抽象, 具有C语言经理的我, 原先是将其看做是一个数据的集合, 把自己常用的数据通过某种方式总结,集合起来, 使用的时候能够更加方便------其实这个还是结构体思想的延续,结构体内部包含了若干的数据(当然,这是一般的说法,也可以添加指正让他具有操作数据的能力),C++的数据抽象,类,将这种思想强化,除了可以包含数据以外还可以包含操作; 类型是一组操作,抽象数据类型则是一组具有某种实现的操作...
阅读全文

浙公网安备 33010602011771号