面向对象——意图与逻辑(四)

原创 2015年11月20日 12:10:30

面向对象——意图与逻辑
面向对象——意图与逻辑 (二)
面向对象——意图与逻辑(三)
面向对象——意图与逻辑(四)

  1. public继承意味着is a(狗是动物,苹果是水果,子类是父类)

  2. virtual意味着接口必须被继承

  3. non-virtual函数意味着接口和实现都必须被继承

  4. non-pure virtual存在一个缺省算法(或者说父类要提供一个实现)

  5. pure virtual则是完全客制化(customerization)

  6. override (重写),通俗地理解就是覆盖(新版本覆盖旧版本);

观察一个类,应首先观察其成员变量,因为大部分类最终表达的仍是一个具有很多成员方法的对象的抽象,也即它是对成员变量,以及围绕成员变量的成员方法的封装。

在多类的、类间关系较为复杂时,进行每个类单独的设计与实现时,脑海中应有一个 UML,它就是建筑实施中的图纸。

虚函数不能是静态函数

虚函数(vptr:virtual pointer、vtbl:virtual table)(也包括 this 指针)都是对象(class objects)的概念;

而 static 是全体对象,是类的概念范畴,静态函数没有 this 指针;

C++中的get、set方法

首先一点,是类的默认构造函数会分别调用类成员变量的默认构造函数。

class Test
{
private:
    std::vector<double> _weights;
public:
    // 有点set方法的感觉
    std::vector<double>& weights() { return _weights;}
    // 而这是get方法
    const std::vector<double>& weights() const { return _weights;}
}

int main(int, char**)
{
    Test t;   // 会调用std::vector<double> 的默认构造函数,创建_weights对象实例

    std::vector<double> dvec{0., 1., 2.};
    t.weights() = dvec;        // 在客户端创建,然后set

    return 0;
}

如果这样理解还算正确的话,那么大量见诸于STL容器的两个版本的(mutable 和 non-mutable)的成员函数的作用便可显见。

Java/C++ 对多态的支持

Java 动态绑定,C++ 静态绑定(默认非多态),

这句话翻译过来即是:
父类引用指向子类对象,父类引用调用其子类中重写的方法时,Java默认多态,C++ 需显式的声明该方法为 virtual 虚函数。

版权声明:本文为博主原创文章,未经博主允许不得转载。

面向对象——意图与逻辑

编程语言中关键字的本质是什么?是向编译器传达一些信息。 何谓意图与逻辑这样古怪的词? 比如,对编译器而言,出现const修饰符,就是告诉(意图)编译器,“我不是左值,不可被修改,所有的修改动作都是非法...
  • lanchunhui
  • lanchunhui
  • 2016年02月27日 21:54
  • 512

面向对象——意图与逻辑 (二)

面向对象——意图与逻辑 “成员变量继承”与”成员方法继承”这一条补充上篇博客。一个类内部没有被 virtual 关键字修饰的成员函数,该类可不可以作为继承关系中的基类,答案是可以的。因为除了“成员方法...
  • lanchunhui
  • lanchunhui
  • 2016年03月02日 08:45
  • 404

面向对象——意图与逻辑(五)

面向对象——意图与逻辑 面向对象——意图与逻辑 (二) 面向对象——意图与逻辑(三) 面向对象——意图与逻辑(四)总论 (1)类是对私有成员变量的封装和抽象, (2)私有成员函数为公有成员函数服...
  • lanchunhui
  • lanchunhui
  • 2016年03月16日 18:56
  • 376

面向对象——意图与逻辑(三)

const 型函数
  • lanchunhui
  • lanchunhui
  • 2016年03月14日 23:23
  • 448

意图与逻辑 —— Python

索引与切片切片(slice)是索引的延伸,索引是取单个元素,slice 是在连续的索引上取值,不支持索引的字典(dict)/ 集合(set),自然也无法支持切片。(注,字典和集合不支持索引,说明其不可...
  • lanchunhui
  • lanchunhui
  • 2016年04月07日 08:29
  • 225

意图与逻辑——STL

关联式容器 vs 序列式容器 仿函数
  • lanchunhui
  • lanchunhui
  • 2016年03月17日 22:07
  • 387

程序设计——意图与逻辑

程序设计中,也是有着鲜明的逻辑关系的(好像是废话)。然而这样的一句话,其实为我们提供了一个方法论,关于什么的方法论?出现了`A`,因为逻辑关系,则必然会导致`B`。或者如果想要出现`B`,我们需首先构...
  • lanchunhui
  • lanchunhui
  • 2016年02月28日 21:46
  • 432

意图与逻辑 (二)

意图与逻辑 A 建立在 B 上谁谁建立在谁谁之上,其实暗含着一种层次(分层)结构;如,在 hadoop 生态圈中,我们说 Hive 是建立在 Hadoop 上的数据仓库基础架构,其实可以简单地理解为:...
  • lanchunhui
  • lanchunhui
  • 2016年03月10日 18:52
  • 304

意图与逻辑

伪分布式 vs 分布式
  • lanchunhui
  • lanchunhui
  • 2016年03月05日 18:00
  • 367

程序设计——意图与逻辑 (三)

程序设计——意图与逻辑 程序设计——意图与逻辑 (二)循环l = [] ... while len(l) > 1: ...则循环体的内部必然会有,删除列表元素的动作(del/l.pop/l....
  • lanchunhui
  • lanchunhui
  • 2016年04月01日 19:54
  • 327
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:面向对象——意图与逻辑(四)
举报原因:
原因补充:

(最多只允许输入30个字)