方法重载

第六章 课后习题

匿名 (未验证) 提交于 2019-12-03 00:32:02
一、填空题 (1)运算符的重载实际上是 的重载。 (2)运算符函数必须被重载为 ,或被重载为 。 (3)成员函数重载运算符需要的参数的个数总比它的操作数 一个。 (4)重载赋值运算符时,通常返回调用该运算符的 ,这样赋值就能进行连续赋值操作。 个形参,且规定其参数的类型 整 。 (6)重载调用运算符函数可以带有 个参数。 二、选择题 (1)下列运算符中,不能被重载的是(B)。 (2)下列描述重载运算符的规则中,不正确的是(C)。 (3)下列运算符中,不能有友元函数重载的是(A) (4)下列描述中,不正确的是(C)。 三、判断题 (1)下标运算符的重载提供了在C++中实现安全的数组下标的一种方法。(对) (2)对下标运算符“[ ]”,即可重载为类成员函数,又可重载为友元函数。(错) (3)重载后缀“++”运算符时多给出的一个int参数,在函数体中并不被使用。(对) (4)重载运算符需要的参数个数与操作数一样多。(错) 四、简答题 (1)比较两种运算符重载形式。 答:在许多情况下,用友元函数还是成员函数重载运算符在功能上没有什么区别;有时将二元运算符重载为友元函数比重载为成员函数使用起来方便 。当然,重载为友元函数也有一些限制。第一,为保持与C++中规定的赋值语义相一致,虽然赋值运算符是个二元操作符,但不能重载为友元函数。同样,也应将“+=”、“-=”等赋值运算符重载为成员函数。第二

C++重载运算符和标准模板库(STL)

匿名 (未验证) 提交于 2019-12-03 00:21:02
一、重载运算符 在C++中,不只是函数可以重载,某些运算符也是可以重载的,即可以自定义运算符的功能,可以重载的运算符如下: 运算符 名称 类型 , 逗号 二进制 ! 逻辑“非” һԪ != 不相等 二进制 % ȡģ 二进制 %= 取模赋值 二进制 & 按位“与” 二进制 & address-of һԪ && 逻辑“与” 二进制 &= 按位“与”赋值 二进制 ( ) 函数调用 ― ( ) 强制转换运算符 һԪ * 乘法 二进制 * 指针取消引用 һԪ *= 乘法赋值 二进制 + 添加 二进制 + 一元加 һԪ ++ 递增 1 һԪ += 加法赋值 二进制 - 减法 二进制 - 一元求反 һԪ -- 递减 1 һԪ -= 减法赋值 二进制 -> 成员选择 二进制 ->* 指向成员的指针选定内容 二进制 / 除法 二进制 /= 除法赋值 二进制 < 小于 二进制 << 左移 二进制 <<= 左移赋值 二进制 <= 小于或等于 二进制 = 赋值 二进制 == 相等 二进制 > 大于 二进制 >= 大于或等于 二进制 >> 右移 二进制 >>= 右移赋值 二进制 [ ] 数组下标 ― ^ 异或 二进制 ^= 异或赋值 二进制 | 按位“与或” 二进制 |= 按位“与或”赋值 二进制 || 逻辑“或” 二进制 ~ 二进制反码 һԪ delete Delete ― new New ―

重载(编译期多态),重写(运行时多态)

匿名 (未验证) 提交于 2019-12-02 23:57:01
重载可以在 编译期 确定调用的方法。 在 Class 文件内部,方法的符号引用是根据 方法名称 、 参数 来区分的,对编译器来说重载方法跟其他方法一样,都是不同的方法而已。 而 Java 的重载是根据 静态类型 来确定方法,所以可以在编译期就能指定调用的方法。 静态类型 & 实际类型: 如, SuperClass obj = new SubClass(); 语句中,前面的「 SuperClass 」是 静态类型 ,后面的「 SubClass 」是 实际类型 。 变量的静态类型是不可变的,编译时可知的,但是实际类型是运行时才能确定。 例: public static void main ( String [] args ) { B b = new B (); f ( b ); // b A c = new C (); f ( c ); // 静态类型是A,所以输出a } static void f ( C c ) { System . out . println ( "c" ); } static void f ( B b ) { System . out . println ( "b" ); } static void f ( A a ) { System . out . println ( "a" ); } static class A {} static class B

方法重载和方法重写(覆盖)的区别

匿名 (未验证) 提交于 2019-12-02 23:52:01
英文 位置不同 作用不同 重载 overload 同一个类中 在一个类里面为一种行为提供多种实现方式并提高可读性 重写 override 子类和父类间 父类方法无法满足子类的要求,子类通过方法重写满足要求 修饰符 返回值 方法名 参数 抛出异常 重载 无关 无关 相同 不同 无关 重写 大于等于 小于等于 相同 相同 小于等于

重载(overload)与重写(override)的区别

匿名 (未验证) 提交于 2019-12-02 23:47:01
overload(重载):在同一个类中,方法名相同,参数列表不相同。与返回值类型无关。 override(重写):存在同一个类中,或者父子接口中,方法名相同个,参数列表相同。遵循“两同两小一大”。   两同 :         方法名相同,参数类型相同(即方法签名相同)   两小 :       引用类型:子类返回类型小于等于父类方法返回类型          一大 overload的方法可以改变返回值类型,因为它与返回值类型无关

面向对象之类的基础重载

ぐ巨炮叔叔 提交于 2019-12-02 23:33:35
通用的基础重载方法: __init__ ( self [,args...] ) 构造函数 简单的调用方法: obj = className(args) __del__( self ) 析构方法, 删除一个对象 简单的调用方法 : del obj __repr__( self ) 转化为供解释器读取的形式 简单的调用方法 : repr(obj) __str__( self ) 用于将值转化为适于人阅读的形式 简单的调用方法 : str(obj) __cmp__ ( self, x ) 对象比较 简单的调用方法 : cmp(obj, x) Python支持运算符重载,实例如下: class Vector: def __init__(self, a, b): self.a = a self.b = b def __str__(self): return 'Vector (%d, %d)' % (self.a, self.b) def __add__(self,other): return Vector(self.a + other.a, self.b + other.b) v1 = Vector(2,10) v2 = Vector(5,-2) print v1 + v2 输出: Vector(7,8) 来源: https://www.cnblogs.com/myshuzhimei/p

Python中保存和重载已建好的模型

匿名 (未验证) 提交于 2019-12-02 22:56:40
保存: 如果我们想保存不同参数下的xgboost模型以供之后重载使用,且我们将已建好的一个xgb模型命名为model, 我们可以直接使用: 或者使用: 这两种方法都可以保存模型,不同的是 dump_model可以同时保存模型和特证名称为txt格式。 重载: model = xgb.Booster(model_file='实际模型保存路径') 但如果模型不是xgboost,该怎么保存呢?方法如下: 保存: joblib.dump(model,filename) # model可以是xgb或其他任意模型,filename为文件名,比如:'ooo1_model.m' 重载: model = joblib.load(filename) down vote An easy way of saving and loading a xgboost model is with joblib library. import joblib #save model joblib . dump ( xgb , filename ) #load saved model xgb = joblib . load ( filename ) 文章来源: Python中保存和重载已建好的模型

java -&gt; 方法的重载

匿名 (未验证) 提交于 2019-12-02 21:53:52
方法的重载 我们假设要在程序中实现一个对数字求和的方法,由于参与求和数字的个数和类型都不确定,因此要针对不同的情况去设计不同的方法。接下来通过一个案例来实现对两个整数相加、对三个整数相加以及对两个小数相加的功能,具体实现如下所示。MethodDemo02.java public class MethodDemo02 { public static void main(String[] args) { // 下面是针对求和方法的调用 int sum1 = add01 (1, 2); int sum2 = add02 (1, 2, 3); double sum3 = add03 (1.2, 2.3); // 下面的代码是打印求和的结果 System. out .println("sum1=" + sum1); System. out .println("sum2=" + sum2); System. out .println("sum3=" + sum3); } // 下面的方法实现了两个整数相加 public static int add01( int x, int y) { return x + y; } // 下面的方法实现了三个整数相加 public static int add02( int x, int y, int z) { return x + y + z; } //

Java8之重写与重载

匿名 (未验证) 提交于 2019-12-02 21:45:52
重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。 重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。 重写方法不能抛出新的检查异常或者比被重写方法声明更加宽泛的异常。 class Animal{ public void move(){ System.out.println("动物可以移动"); } } class Dog extends Animal{ public void move(){ System.out.println("狗可以跑和走"); } } ##重写(Override)规则 1、参数列表必须完全与被重写方法的相同。 2、返回类型与被重写方法的返回类型可以不相同,但是必须是父类返回值的派生类。 3、访问权限不能比父类中被重写的方法的访问权限更低。例如:父类一个方法被声明为public,那么在子类中重写该方法就不能声明为protected。 4、父类的成员方法只能被它的子类重写。 5、声明为final的方法不能被重写。 6、声明为static的方法不能被重写,但是能够被再次声明。 7、子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为private和final的方法。 8、子类和父类不在同一个包中

Java -- 最简单的认识重载

不羁岁月 提交于 2019-12-02 19:50:47
定义 方法的名称相同,参数个数或类型不同的时候就成为方法重载。 示例 编写一个两个数相加的方法: public class hello{ public static void main(String args[]){ System.out.println(sum(1,2)); System.out.println(sum(1,2,3)); System.out.println(sum(1.01,2.0)); } public static int sum(int a, int b){ return a+b; } // 参数数量不同 public static int sum(int a, int b, int c){ return a+b+c; } // 类型不同 public static double sum(double a, double b){ return a+b; } } 执行结果: 这就是一个最简单的方法重载,参数不同会调用相对应的方法。 但是会发现最后一个返回值的类型也不同,这也算是重载,但是在实际开发中不建议这么做,会造成返回值混乱。 最常见的方法重载 这是一段kotlin代码,跟Java是一样的,为了解释一下(懒得打~) 可以看到自带的 print() ,即 System.out.print() 方法可以包含各种类型的参数,其实就是重载。 来源: https: