-
你正在使用 gcc,所以我打开了我的笔记本电脑(带有 Linux)来回答这个问题。
问题出在你的第八行:a & operator = (a & a) 求解:a & operator = (const a & a) 分析如下:
当函数 fun 在返回类 a 中时,编译器需要在主函数中创建一个临时类常量,以便可以将其赋值给 a1。 在主要函数中由于 ** 在大键函数中是 a1=fun(),因此等号的右侧是一个常量(如分析中所示),但在等号运算符重载中,您只定义非常量。 因此,类型不匹配,并且 g++ 会给出错误消息。
原因如下。
此外,如果我们只在函数中返回一个基元类型,例如 int。 当函数返回时,编译器不会创建额外的 int 常量,而只是填充返回地址指示的内存。 当然,如果你懂汇编语言,我说的很容易理解,但如果你不懂汇编,这个解释可能会有点混乱。
但请记住,当类返回时,编译器会创建一个临时的类常量,而基元类型不会! (将类参数传递给函数也存在同样的问题)。
我在 VC 中调试了您的**,只报告了“运行时检查失败 3 - 变量”。'a' is being used without being defined.之后,我添加了默认构造函数“a()”,这解决了问题。 不同的编译器会以不同的方式处理不那么严谨的**!
-
我编译没有问题
-
C++重载是C语言中的一种函数表示形式,即重载函数。
重载函数是函数的特例,为了便于使用,C++ 允许在同一作用域中声明多个功能相似的同名函数,但这些具有相同名称的函数的形式参数(即参数的数量、类型或顺序)必须不同。
也就是说,同一个运算符用于完成不同的算术函数。 这是重载函数。 重载函数通常用于实现函数相似但处理数据类型不同的问题,并且不能只是函数的返回值类型。
-
1. C++函数重写。
1) 被重写的函数不能是静态的。它必须是虚拟的,或者是重写的(即函数在最原始的基类中被声明为虚重写,并且在 C++ 中没有重写)。
2) 重写函数必须具有相同的类型、名称和参数列表。
3)重写函数的访问修饰符可以不同。即使 virtual 是私有的,也可以在派生类中将其重写为 public 并保护(这与 c 完全不同)。
2.C++函数过载。
1)直观地说,重载是一个同名的函数,有不同的版本(不同的参数列表:参数类型、顺序)。
2) 构成重载函数集的函数必须位于同一域中。例如,试图在基类和派生类中形成一组同名的重载函数会抛出错误(调用函数时,编译错误),实际上派生类中的新函数“version”隐藏了基类中定义的函数(隐藏在C++中很少被提及, 但存在)。
-
重载是一种多态性(如C++),有四种形式的多态性:
1.虚函数多态性。
2.模板多态性。
3.重载。 4.转换专业化。
严格来说,重载是编译时多态性,即静态多态性,根据不同类型的函数进行编译时,会产生不同的名称,如int foo和char foo等。 因此,重载仍然符合多态定义——通过单一身份支持不同特定行为的能力,只是重载是静态多态,而不是通过继承和虚函数的动态多态。 第二个论点是重载与多态性无关,真正与多态性相关的是继承。
当派生类重新定义基类的虚拟方法时,基类会根据分配给它的不同派生类引用动态调用属于该派生类的相应方法,这些引用在编译过程中无法确定。 因此,这样的方法地址在运行时绑定(动态绑定)。
重载只是一种语言特征,一种语法规则,与多态性无关,与面向对象无关。
但是,对于所谓的第二种类型的重载,有一个特定的术语 - 重写或重新定义。 重载和重写的区别在于是否被重写,重写一般发生在不同的类之间,并且存在继承关系,重载多在一个类或一个**段落中。
-
C++ 函数重载中的重载:
函数重载是指函数名称相同,但定义不同。 函数重载允许程序员将一系列函数族定义为一个统一的接口,但可以处理不同类型的数据或接受不同数量的参数。 这实现了具有不同定义的统一接口的思想。
流重载:C++ 流提取运算符和插入运算符是 C++ 类库提供的输入。
输出 (iO) 运算符。 系统分别定义了 istream 和 ostream 的输入流类 istream 和输出流类 ostream、cin 和 cout 对象。
iostream 头文件已重载 “” 和 “,因此可用于输入和输出标准类型数据。 但是,如果您自己定义类型,则需要重新定义。
包含这两个运算符,以便它们可以输入该自定义类型的年数。 格式如下:
流插入的重载:ostream &operator<<(ostream &, custom class &)。
流提取的重载:istream &operator>> (istream &, custom class &)。
操作员过载:
运算符重载是对运算符的重新定义,即运算符可用于对多种数据类型的操作。 运算符的重载在实际编程中很常见,例如,“+ 运算符既可用于整数加法、浮点加法,甚至字符串的链接。 格式如下:
键入运算符符号(参数列表);
-
函数名称相同,但参数不同,或者返回值不同。
-
重载是 C++ 中的相同副本。
班级成员攻击。
功能间重负载,过载功能:du
1)同范围(同类DAO中的ZHI);
2)功能名称相同;
3)参数不同;
添加注释:C++ 中同名、返回值不同、参数相同的函数不能判断为函数重载
-
它与现有类的函数名称相同,但参数不同。
-
所谓重载,就是函数名必须相同,返回值可以相同,也可以不同,但特征板必须不同。
函数名和函数的区别在于,功能标记是函数可以重载。
编译器首先选择函数名称,然后根据功能标记在众多重载函数中查找合适的函数。
这主要是在函数中,有时为了处理不同对象的一些相同问题,为了避免定义多个函数,使用重载,以上是我的建议,希望对大家有所帮助。
-
1.为用户降低复杂性。
2.这样减少了函数名的数量,避免了命名空间的污染,对程序的可读性有很大的好处。
重载函数是函数的特例,为了便于使用,C++ 允许在同一作用域中声明多个同名函数,但这些同名函数的形式参数(指参数的数量、类型或顺序)必须不同,即用同一个运算符执行不同的函数。 这是重载函数。 重载函数通常用于解决功能相似但处理不同类型数据的问题。
-
多个功能可以用同一个名称(不同的参数)来实现同一个功能,可以有效地复用**,增加可读性。
再写几个例子,以便更深入地理解。
网上也有很多详细的解释。 比如。
-
为了简化,有了函数重载,只要你写一个函数,就可以根据不同的用途来调用它,可以说是一个函数,多种用途,简化。 它显示了面向对象编程的优越性。
-
我还没看完,第一,好同志。
其实本质区别在于看函数特性:被重写的两个函数的函数特性是一样的,重载的两个函数的函数名称是一样的,但函数特性不同。 >>>More