overloading相关内容
我遇到了问题,因为我正在使用 some_widget_instance.delete() 删除小部件.我还有一个名为 WidgetFile 的模型,它带有一个覆盖 delete() 方法,这样我就可以在删除 WidgetFile 时从硬盘驱动器中删除文件.我遇到的问题是,如果我删除了一个 Widget,并且它有与它相关的 WidgetFiles,如下所示: class WidgetFile(mo
..
我有 CMatrix 类,其中是指向值数组的“双指针". class CMatrix {上市:int行,cols;int **arr;}; 我只需要通过键入以下内容来访问矩阵的值: CMatrix x;x[0][0] = 23; 我知道如何使用: x(0,0) = 23; 但我真的需要以另一种方式做到这一点.任何人都可以帮助我吗?请? 最后感谢大家的帮助,我是这样做的... c
..
当我分析与重载和继承相关的简单 java 代码时,我希望收到一个与参数数据类型匹配的重载输出.但它不能那样工作. 代码: class A {public int calc(双数){System.out.println("计算A");返回 (int)(num+1);}}B 类扩展 A{公共 int calc (long num){System.out.println("calc B");返回
..
我正在将我的一些类从广泛使用 getter 和 setter 更改为更像 Python 一样使用属性. 但是现在我卡住了,因为我之前的一些getter或setter会调用基类的相应方法,然后执行其他操作.但是如何通过属性来实现呢?如何调用父类中的属性getter或setter? 当然只是调用属性本身会产生无限递归. class Foo(object):@财产定义栏(自我):返回 5@
..
我的域中有 FinanceRequests 和 CommissionTransactions.如果我有一个 FinanceRequests 列表,每个 FinanceRequest 可能包含多个需要收回的 CommisionTransactions.不要担心这是如何完成的. 下面的类(最底部)让我感觉很模糊和温暖,因为它简洁并且很好地重用了现有的代码.一个问题类型擦除. public vo
..
我想弄清楚如何定义一个可以处理多种类型参数(例如 int 和 int64)的函数.据我了解,在 F# 中函数重载是不可能的(当然编译器会抱怨).以下面的函数为例. let sqrt_int = 函数|n:int ->int (sqrt (float n))|n:int64 ->int64 (sqrt (float n)) 编译器当然会抱怨语法无效(似乎不支持模式匹配中的类型约束),尽管我认为这
..
考虑假设的对象层次结构,从: TFruit = class(TObject)上市构造函数创建(颜色:TColor);虚拟的;结尾; 及其后代: TApple = class(TFruit)上市构造函数创建();超载;虚拟的;构造函数创建(颜色:TColor);超载;覆盖;//已弃用.调用其他构造函数 - 维护虚拟构造函数链结尾; 这里的想法是我已经覆盖基类的虚拟构造函数,重载也恰好是虚拟的
..
假设这是一个 ServiceContract [ServiceContract]公共接口 MyService{【经营合同】int Sum(int x, int y);【经营合同】int Sum(double x, double y);} C#中允许方法重载,但WCF不允许重载操作契约托管程序将在托管时抛出 InvalidOperationException 解决方案 简而言之,不能重载
..
我有这个代码: 模板 为什么它调用第二个而不是第一个?我会认为它们是相同的,但它们显然不是,因为我没有收到重新定义错误. 解决方案 因为第二个重载不是模板. 当模板函数和非模板函数都可用于解析函数调用时,选择非模板函数. 来自 C++ 11 标准的第 13.3.3/1 段: [...] 鉴于这些定义,如果对于所有参数 i,ICSi(F1) 不是更差的转换,则可行函数
..
我的代码的简化版本在这里 int foo(int x){返回 x;}int foo(int x, int y){返回 x+y;}模板int bar(int k, unary_func f){返回 f(k);}int main(){酒吧(3,富);返回0;} 有没有办法告诉编译器我想传递的参数是第一个‘foo’? 解决方案 你可以给出一个明确的模板参数: bar(3, foo); 或
..
为什么这段代码有效: 模板::value, T>* = nullptr>无效添加(T){}模板::value, T>* = nullptr>无效添加(T){} 并且可以正确区分这两个调用: 添加(1);添加(1.0); 而以下代码如果编译会导致重新定义 Add() 错误? 模板::value, T>::type>无效添加(T){}模板::value, T>::type>无效添加(T){}
..
我有以下代码: #include 模板 void f (T) { std::cout (真);//#2 打印 f(bool)} #1 行调用 f(T),而 #2 行调用 f(bool).
..
下面的代码是如何工作的? typedef char (&yes)[1];typedef char (&no)[2];模板 结构主机{运算符 B*() 常量;运算符 D*();};模板 结构 is_base_of{模板 静态是检查(D *,T);静态不检查(B*,int);static const bo
..
我对多态、重载和覆盖的概念非常困惑,因为在我看来它是一样的.请解释这些概念,以及它们之间的区别 很困惑所以请正确指导我. 谢谢 解决方案 多态可以可以通过覆盖来实现.简而言之,多态性是指对象根据其自身的性质提供不同行为(使用不同实现)的能力.具体来说,取决于它在类层次结构中的位置. 方法覆盖是指在超类或接口中定义的方法被一个人重新定义其子类,从而修改/替换超类提供的行为.
..
我试图理解为什么以下代码无法编译,显然该解决方案依赖于在派生类中专门声明对 method_A 的依赖.请参考以下代码: 类基础{上市:void method_A(int param, int param2){std::cout
..
公共类 A {公共无效 f1(字符串 str){System.out.println("A.f1(String)");this.f1(1, str);}public void f1(int i, String str) {System.out.println("A.f1(int, String)");}}公共类 B 扩展 A {@覆盖公共无效 f1(字符串 str){System.out.prin
..
我有一个集合(或列表或数组列表),我想在其中放置字符串值和双精度值.我决定让它成为一个对象集合并使用重载和多态,但我做错了. 我进行了一个小测试: 公共类 OOP {无效证明(对象o){System.out.println("对象");}无效证明(整数 i){System.out.println("整数");}无效证明(字符串s){System.out.println("字符串");}无效
..
Go 可以有可选参数吗?或者我可以只定义两个具有相同名称和不同数量参数的函数吗? 解决方案 Go 没有可选参数 也没有支持方法重载: 方法调度被简化,如果它不需要做类型匹配好.使用其他语言的经验告诉我们有各种各样的具有相同名称但的方法偶尔会有不同的签名有用,但它也可能是在实践中令人困惑和脆弱.仅按名称匹配并要求类型的一致性是主要的简化 Go 类型的决策系统.
..
我读到 Dart 不支持函数重载.它是否支持运算符重载?如果是,你能在一个简单的例子中告诉我它是如何完成的吗?以及有哪些优势等? 解决方案 在新版本中使用 == 运算符尝试重载时,所选答案不再有效.现在你需要这样做: class MyClass {@覆盖布尔运算符 ==(其他){//将此与其他比较}} 但这并不安全.other 未指定为类型,可能会发生意外.例如: void main
..
我需要编写一个涉及日期的类.我应该重载 + 运算符以允许将天数添加到日期中.解释它是如何工作的:Date 对象以 (2016, 4, 15) 的格式表示为 (year, month, date).将整数 10 添加到此应该产生 (2016, 4, 25).Date 类具有值 self.year、self.month、self.day. 我的问题是代码应该以 Date + 10 和 10 +
..