问题标签 [overriding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
35087 浏览

c# - C# 中有没有办法用扩展方法覆盖类方法?

在某些情况下,我想用扩展方法覆盖类中的方法。有没有办法在 C# 中做到这一点?

例如:

我想要这样做的一种情况是能够将字符串的哈希存储到数据库中,并且所有使用字符串类哈希的类(即字典等)都使用相同的值。内置的 .NET 散列算法不保证从一个版本的框架兼容到下一个版本,我想用我自己的替换它。

在其他情况下,我还想用扩展方法覆盖类方法,因此它不仅仅特定于字符串类或GetHashCode方法。

我知道我可以通过对现有类进行子类化来做到这一点,但在很多情况下能够通过扩展来做到这一点会很方便。

0 投票
7 回答
7824 浏览

xcode - 我如何在 OS X 下覆盖 malloc()、calloc()、free() 等?

假设最新的 XCode 和 GCC,覆盖内存分配函数的正确方法是什么(我猜也是 operator new/delete)。调试内存分配器对于游戏来说太慢了,我只需要一些基本的统计数据,我可以自己做,影响最小。

我知道由于钩子在 Linux 中它很容易,十年前我在编写 HeapManager 时,这在 codewarrior 中是微不足道的。

可悲的是 smartheap 不再有 mac 版本。

0 投票
15 回答
122221 浏览

c++ - 在构造函数中调用虚函数

假设我有两个 C++ 类:

如果我编写以下代码:

人们可能会期望将n其设置为 2。

原来n设置为 1。为什么?

0 投票
1 回答
1705 浏览

django - Django:覆盖每个应用程序而不是每个项目的“不可覆盖”管理模板?

Django 文档清楚地说明了以下内容:

并非每个应用程序或每个模型都可以覆盖 contrib\admin\templates\admin 中的每个模板。

然后它列出了那些可以,和base.htmlbase_site.htmlindex.html——我感兴趣的——不在列出的那些之中。它们可以被每个项目覆盖,但不能被每个应用覆盖。

我的问题是:有没有办法不涉及编辑 django.contrib.admin 中的代码?我愿意考虑一些猴子补丁解决方案:-)。我真的希望我的应用程序在其templates目录中拥有这三个文件的自定义版本,并让每个使用该应用程序的项目都使用这些文件。

我感兴趣的原因是我正在创建一个具有高度自定义管理界面的大型可重用应用程序,并且每个项目覆盖“核心”模板并不是最好的解决方案,因为我必须复制将自定义模板添加到使用该应用程序的每个项目的模板目录中。发布对这些核心模板进行新修改的应用程序的新版本意味着将所有内容重新复制到受影响的项目中。啊。

我理解决定只为每个应用程序覆盖少数几个模板的原因;毕竟,如果可以覆盖所有这些,那么哪个应用程序的覆盖管理员会优先?

但就我而言,该应用程序将成为多个客户项目的“核心”,而这些项目中的其他应用程序仅起支持作用。

对现有模板的基于 CSS 的自定义只能让您到目前为止,除非绝对必要,否则我不愿依赖 JavaScript DOM 操作解决方案。

想到的一种解决方案是将自定义base.html等模板放在 appname/templates/admin/ 中,然后将它们符号链接到项目的模板文件夹。这样,对应用程序的任何更新都将自动在项目级别生效。

如果没有更好的建议,符号链接可能是我选择的方法,但我想听听是否有人有更好的解决方案。

0 投票
5 回答
3412 浏览

c++ - 相同的函数,类层次结构的不同返回类型

我们有一个类层次结构,看起来像这样:

现在我们需要编写一个函数,通过将价格和数量相乘来计算价值。目的是使将来添加新类尽可能简单。您可能知道,这并不简单,因为这些字段的数据类型对于不同的类是不同的。实际上,我们有这些函数在概念上做同样的事情,但在编程术语中它们是不同的操作。

为了最大限度地减少所需的剪切和粘贴量,到目前为止我能想到的解决方案是使用模板函数:

它可以正常工作,但这意味着我必须在每个类中定义每个成员函数。例如,如果我想要一个名为 getValue 的函数,我将需要另外很多这样的模板函数。

定义类时,类成员的数据类型是已知的,因此必须再次将它们放入函数定义中似乎是重复的。有没有办法在函数定义中避免所有这些模板业务?

谢谢你。

安迪

PS我看过以下问题,但该问题的问题略有不同: Returning different data type based on the data (C++)

0 投票
4 回答
4870 浏览

c# - 如何确定 MethodInfo 是否是基方法的覆盖

我正在尝试确定从类型实例上的 GetMethod 调用获得的 MethodInfo 对象是由该类型实现还是由它的基实现。

例如:

ToString 方法可以在 Foo 类中实现,也可以不在。我想知道我是否得到了 foo 实现?

相关问题

是否可以判断.NET 虚拟方法是否已在派生类中被覆盖?

0 投票
4 回答
19518 浏览

java - 在 Java 中实现抽象方法时是否应该添加 @Override 注释?

在 Java 中重写非虚拟方法时,@Override建议使用注解,但如果我实现抽象方法怎么办?我@Override也应该使用吗?

0 投票
6 回答
40619 浏览

c++ - C++ 函数重写

我有三个不同的基类:

然后我从这样的基础派生(用 X 代替 A、B 或 C):

三个不同的基类中的函数是如何被覆盖的?我的以下三个假设是否正确?还有其他注意事项吗?

  • 使用 BaseA,子类不会编译,纯虚函数没有定义。
  • 使用 BaseB,当在 BaseB* 或 Child* 上调用 foo 时,将调用 child 中的函数。
  • 使用 BaseC,当在 Child* 上调用 foo 而不是在 BaseB* 上调用子函数时(调用父类中的函数)。
0 投票
4 回答
92585 浏览

java - java可以在其他对象而不是子类型中调用父覆盖方法吗?

这是工作的java代码

并运行测试类打印

问题1:在运行时,对象C的类型是MyTCup,但它总是可以调用super方法。初始化对象后MyTCup内存中是否有方法堆栈,然后可以像代码一样在运行时调用?

问题2:没有办法在其他对象中调用super方法。据我所知,c++ 可以随时转换为调用父方法。为什么它在 Java 中有所不同?

0 投票
1 回答
837 浏览

javascript - 使用 Inject 从 Webbrowser Control 禁用/覆盖一些 Javascript?

我正在尝试访问具有某些导致错误并阻止页面完全呈现的 javascript 的页面。

这两个错误都与我直接访问页面而不是通过框架的事实有关。

我已经通过制作我自己的页面克隆并托管它来解决这个问题,但我不喜欢那个解决方案,并且想知道是否有办法以某种方式

通过 Webbrowser 控件使用 Javascript 注入覆盖/更改或更好地擦除该代码

谢谢