Skip to content

  • 体验新版
    • 正在加载...
  • 登录
  • PaddlePaddle
  • Paddle
  • 合并请求
  • !1251

P
Paddle
  • 项目概览

PaddlePaddle / Paddle
大约 2 年 前同步成功

通知 2325
Star 20933
Fork 5424
  • 代码
    • 文件
    • 提交
    • 分支
    • Tags
    • 贡献者
    • 分支图
    • Diff
  • Issue 1423
    • 列表
    • 看板
    • 标记
    • 里程碑
  • 合并请求 543
  • Wiki 0
    • Wiki
  • 分析
    • 仓库
    • DevOps
  • 项目成员
  • Pages
P
Paddle
  • 项目概览
    • 项目概览
    • 详情
    • 发布
  • 仓库
    • 仓库
    • 文件
    • 提交
    • 分支
    • 标签
    • 贡献者
    • 分支图
    • 比较
  • Issue 1,423
    • Issue 1,423
    • 列表
    • 看板
    • 标记
    • 里程碑
  • 合并请求 543
    • 合并请求 543
  • Pages
  • 分析
    • 分析
    • 仓库分析
    • DevOps
  • Wiki 0
    • Wiki
  • 成员
    • 成员
  • 收起侧边栏
  • 动态
  • 分支图
  • 创建新Issue
  • 提交
  • Issue看板

Using override keyword in Layer !1251

  • Report abuse
!1251 已合并 2月 03, 2017 由 saxon_zh@saxon_zh 创建
#<User:0x00007ff7c2d43de0>
  • 概览 1
  • 提交 2
  • 变更 73

Created by: reyoung

给每一个Layer的子类添加了override关键词。这么做是为了方便下一步重构。使用override关键词可以在重构基类的函数,修改基类函数时,避免一些错误。

例如

class Base {
public:
    virtual void init();
};

class Derived : public Base {
public:
    virtual void init() {
        // do something else.
    }
};

这样写code的时候,如果修改基类的init函数签名,会导致Derived 类里面的init还是没有修改,导致了不符合预期的行为。

class Base {
public:
    virtual void initEx();
};

class Derived : public Base {
public:
    virtual void init() {
        // do something else.
    }
};

auto instance = new Derived();
instance->initEx();  // It will invoke Base::initEx, not Derived::init

而如果把子类的virtual在实现的时候,改成override,那么修改基类的init函数的时候,就会让编译直接报错。

修改前:

class Base {
public:
     virtual void init();
};

class Derived : public Base {
public:
   void init() override {
        // do something else.
    }
};

auto instance = new Derived();
instance->init(); // Derived::init()

修改后:

class Base {
public:
     virtual void initEx();
};

class Derived : public Base {
public:
   void init() override {
        // do something else.
    }
};

auto instance = new Derived();
instance->init(); // compile error. Because Derived::init override nothing.

这对于重构代码,非常有帮助。可以让编译器去检查代码的正确性。

指派人
分配到
审核者
Request review from
无
里程碑
无
分配里程碑
工时统计
标识: paddlepaddle/Paddle!1251
Source branch: github/fork/reyoung/feature/add_override_to_layer_init
渝ICP备2023009037号

京公网安备11010502055752号

网络110报警服务 Powered by GitLab CE v13.7
开源知识
Git 入门 Pro Git 电子书 在线学 Git
Markdown 基础入门 IT 技术知识开源图谱
帮助
使用手册 反馈建议 博客
《GitCode 隐私声明》 《GitCode 服务条款》 关于GitCode
Powered by GitLab CE v13.7