c#继承关系是否能继承运算符重载案例
时间: 2023-07-27 19:21:49 浏览: 137
继承与派生 运算符重载
以下是一个简单的C#继承关系可以继承运算符重载的示例:
```csharp
using System;
namespace OperatorOverloadingInheritance
{
class Program
{
static void Main(string[] args)
{
DerivedClass d1 = new DerivedClass(5);
DerivedClass d2 = new DerivedClass(10);
DerivedClass d3 = d1 + d2; // 调用DerivedClass类中的+运算符重载方法
Console.WriteLine("d3.value = " + d3.value); // 输出 d3.value = 15
}
}
class BaseClass
{
public int value;
public BaseClass(int v)
{
value = v;
}
public static BaseClass operator+ (BaseClass x, BaseClass y)
{
return new BaseClass(x.value + y.value);
}
}
class DerivedClass : BaseClass
{
public DerivedClass(int v) : base(v) { }
// 继承了基类的运算符重载方法
public static DerivedClass operator+ (DerivedClass x, DerivedClass y)
{
return new DerivedClass(x.value + y.value);
}
}
}
```
在上面的示例中,`BaseClass`中定义了一个`+`运算符重载方法,`DerivedClass`类继承了`BaseClass`类,因此会继承`BaseClass`中定义的运算符重载方法。同时,`DerivedClass`中也定义了一个`+`运算符重载方法,可以重载`BaseClass`中定义的运算符。在`Main`方法中,定义了三个`DerivedClass`类型的实例,使用`+`运算符重载方法进行相加操作,调用的是`DerivedClass`类中定义的`+`运算符重载方法,最终输出结果为`d3.value = 15`。
阅读全文