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

原创 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 虚函数。

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

相关文章推荐

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

1. C++中的 get、set 方法 2. Java/C++ 对多态的支持

面向对象(四)

1、抽象类       当一个类包含了抽象方法,该类必须使用abstract关键字来修饰,但抽象类可以不包含任何抽象方法,只需使用abstract关键字来修饰即可。抽象类是不可以被实例化的,因为在抽...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

JavaScript Boolean(逻辑)对象

Boolean(逻辑)对象用于将非逻辑值转换为逻辑值(true 或者 false)。 实例 检查逻辑值检查逻辑对象是 true 还是 false。 无标题文档 ...

面向对象的意义

作者:知乎用户 链接:https://www.zhihu.com/question/20275578/answer/26577791 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非...

Object-c 面向对象(四)

一、 继承 1. 继承的基本用法 l 设计两个类Bird、Dog // Bird的声明 @interface Bird : NSObject {     @public ...

JAVA之面向对象(四)

JAVA增强的包装类 为了解决JAVA基本的八种数据类型不能当做Object类事业的问题,java提供了包装类的概念,称其为基本数据类型的包装类。 除了int型的包装类是Integer,char型的是...

【JavaSE笔记】面向对象(四)_接口

本期知识点: 接口 内部类 形式参数和返回值的问题 1. 接口 a. 概述: 动物类中的具体动物,如Cat,Dog。有时候会有额外的动作,如跳高等额外学到的动作。这些动作不能定义到具体类中,所以Ja...

面向对象PHP(四)

<?php /** * 接口就是把不同类的共同行为进行了定义,然后在不同的类里面实现不同的功能。 * 因为接口的方法实现可以有很多,所以对于接口里面定义的方法的具体实现是多种多样的,这种特性我...

第四章 面向对象

1.面向对象思想  万物皆为对象,每个对象都有自己的属性和行为,相对于面向过程编程而言提高了代码的可重用型。  面向对象的特征:封装、继承、多态,提高了系统的灵活性,健壮性。 2.类与对象及其使...

Java编程思想:面向对象的逻辑思维方式

什么叫“面向对象”?不感兴趣者,一带而过;有志于在这方面发展的,匆忙找到一本有关书籍来啃究竟什么是“面向对象”。然而,要突破思想的束缚,说难也不难,说到要深刻认识却也不容易。笔者在做了一些轻量级的工作...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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