×

函数重载 on

为什么Python不支持函数重载?成员函数能否被重载取决于什么

admin admin 发表于2023-07-09 13:13:27 浏览53 评论0

抢沙发发表评论

本文目录

为什么Python不支持函数重载

结论:因为这会违背Python之禅:Simple is better than complex.

函数重载,意味着,在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同。如果Python这样做,将会对新手,甚至是老手都会很不友好,而且这样做是极反人类的。换位思考,如果你是行为人,想要找行政机关办事,如果有两个行政机关名字完全相同,结果分管不同职能,你会怎么想,是不是会觉得行政机关在不作为,是懒政!

因此,Python为了简单,放弃了很多其他语言没有的特性,这是我最欣赏Python的地方。

成员函数能否被重载取决于什么

原文是这样的:A member function that may not change an object’s ordinary (i.e., neither static nor mutable) data members. The this pointer in a const member is a pointer to const. A member function may be overloaded based on whether the function is const你说的问题就是最后一句的翻译,是某个汉语IT者翻译的不准确,或者说翻译错了。

在C语言中类成员,函数重载,继承,派生类,类模板怎么定义

C语言中没有类的概念,C++中才有类,有类成员变量,成员函数,对象,以及重载,继承,派生的概念;函数的重载是指在同一个类中具有相同的函数名,但是可能函数的返回值类型,或者形参个数,或者形参类型不同;派生是指基类跟子类的关系:例如classA:publicB;类A共有继承B;呵呵,这些东西需要你慢慢看,注意重载跟覆盖的区别以及与虚函数之间的关系,等等至于类模板,就是你定义一个类,而不指定数据类型,关键字template,等到后面的开发中你可以实际根据需要实例化为你想要的类型,例如int,char,struct等等

类成员函数的重载,覆盖和隐藏的区别

成员函数被重载的特征 (1)相同的范围(在同一个类中); (2)函数名字相同; (3)参数不同; (4)virtual 关键字可有可无。 覆盖是指派生类函数覆盖基类函数,特征是 (1)不同的范围(分别位于派生类与基类); (2)函数名字相同; (3)...

重载为类的成员函数

运算符重载的目的:要使程序员自己定义的类所实例的对象,能像int,char等基础类型进行加减乘除、赋值、输入输出等运算。原则:用成员函数重载一元及与赋值有关的运算符,其中“=、()、、-》、-》*”必须用成员函数重载;用全局函数重载与赋值无关且不是必须用成员函数重载的二元运算符。例如:class Fraction{ friend istream& operator》》(istream&,Fraction&);//全局函数重载》》 friend ostream& operator《《(ostream&,const Fraction&);//全局函数重载《《 friend Fraction operator!(const Fraction&);//全局函数重载一元运算符 //全局函数重载二元运算符 friend Fraction operator+(const Fraction&,const Fraction&); friend Fraction& operator++(Fraction&);//全局函数重载前缀++运算符 friend Fraction operator++(Fraction&,int);//全局函数重载后缀++运算符public: Fraction(int=0,int=1);//默认构造函数 Fraction(double);//根据double构造Fraction void set(int,int); Fraction operator-()const;//成员函数重载一元运算符 Fraction operator-(const Fraction&)const;//成员函数重载二元运算符 operator double()const;//类型转换 Fraction& operator--();//成员函数重载前缀--算符 Fraction operator--(int);//成员函数重载后缀--算符private: int molecular;//分子 int denominator;//分母 static int gcd(int,int);//求两个整数的最大公约数};//成员函数重载一元运算符Fraction Fraction::operator-()const{ return Fraction(-molecular,denominator);}//成员函数重载二元运算符Fraction Fraction::operator-(const Fraction& other)const{ int m=other.denominator*molecular-denominator*other.molecular; int d=denominator*other.denominator; return Fraction(m,d);}//全局函数重载》》istream& operator》》(istream& in,Fraction& fraction){ int m=0; int d=1; in》》m; in.ignore(); in》》d; fraction.set(m,d); return in;}//全局函数重载《《ostream& operator《《(ostream& out,const Fraction& fraction){ if(double(fraction)《0) out《《“-“; out《《fabs(fraction.molecular); if(fraction.molecular!=0&&fraction.denominator!=1) out《《“/“《《fabs(fraction.denominator); return out;}你的程序例子不太标准,不易于理解。推荐《C++程序设计实例教程》刘振宇 东软电子出版社 讲得很清晰透彻,非常适于初学者。学习C++,基础很重要!如果有需要的话,请把邮箱留给我,我有电子书。

C++中成员函数重载是什么意思

重载函数重载,英文为overloading,大概就是很多个的意思。举个例子,比如,我需要个函数。取2个int的最大值。很容易,函数接口应该是 (1) int max(int a, int b); 那更进一步,我取3个 int 的最大值呢,接口可以定义为 (2) int max(int a, int b, int c);对比 函数(1), (2), 的名字,是一样的,都叫 max,就只有参数的个数不同。这是函数重载。那现在,我需要取两个float的最大值呢,接口也可以定义为 (3) float max(float a, float b);对比 函数(1),(3), 名字也是一样的,叫max。参数个数也是一样的。不过参数的类型不同。这也是函数重载。

C++的常成员函数与同名成员函数重载,如何显式调用常成员函数

作为一个规则,常成员函数与它重载的函数应该有同样的语义,因此在绝大多数情况下,你都步应该需要显式强制调用某个特殊版本,否则你会很痛苦的。 对于这种调用,应该只有把对象cast成常引用调用。你的方法不对,因为你在定义一个新的实例来调用,实际上是在全新的对象上调用。对于和this有关的东西,要关心实例 正确的是*(const C1&)c1).fun();