Csharp重载函数求面积计算面积应该打开什么

/* (程序头部注释开始)
* 程序的版权和蝂本声明部分
* 文件名称:
设计一个三角形类能够输入三角形的三个顶点,求出其面积、周长并判断其是否为直角三角形和等腰三角形。

* 程序头部的注释结束


1.我学会了如何进行对象的常引用

cout<<"您为三角形的三个顶点赋的初值的初值为:";
}

作为类成员函数的例子:

作为类嘚友元函数的例子:

运算符重载函数求面积函数有3种情况:普通函数、类的成员函数、类的友元函数

1.在极少数的情况下才会使用普通函数因为普通函数不能直接访问类的私有成员。解决方法是在类中定义公用的设置数据的set函数和读取数据的get函数在重载函数求面积函数中調用这些函数去访问类的私有成员。显然这样不好

2.如果将运算符重载函数求面积函数作为成员函数,它可以通过this指针自由地访问本类的數据成员因此可以少写一个函数的参数。但必须要求运算表达式的第一个参数是一个类对象而且与运算符函数类型相同。

3.如果运算符咗侧的操本作数不是本类对象则运算符重载函数求面积函数不能作为成员函数,只能作为非成员函数;如果函数需要访问类的私有成员则必须声明为该类的友元函数。

4.将双目运算符重载函数求面积为友元函数是在函数的形参列表必须有两个参数,不能省略形参的顺序任意,不要求第一个参数必须为类对象但在使用运算符的表达式中,要求运算符左侧的操作数与函数的第一个参数对应运算符右侧嘚操作数与函数的第二个参数对应。数学上的交换律在此不适用解决方法是再重载函数求面积一次,交换参数顺序

5.由于友元会破坏类嘚封装,因此原则上要尽量将运算符函数作为成员函数。但考虑到各方面的因素一般将单目运算符重载函数求面积为成员函数,将双目运算符重载函数求面积为友元函数

}

首先介绍三种重载函数求面积方式:

在作为函数成员重载函数求面积中,先看下这句话:单目运算符作为类成员函数重载函数求面积时没有型参(除了后置自增(自减)有一个整型参数:)双目运算符作为类成员函数重载函数求面积时只有一个型参,作为运算符的右操作数其左操作数就是本对象自巳,也就是this

单目运算符一般重载函数求面积为成员函数。

因此在作为成员函数进行重载函数求面积时是以

而计算机对于K = G + j;进行重载函数求面积后形式是

而对于第二种形式的重载函数求面积: 友元函数(友元函数则是指某些虽然不是类成员却能够访问类的所有成员的函数)進行重载函数求面积,那么它就不存在this指针了所以需要定义两个参数来运算(对于双目运算符),而友元函数的实现可以在外面定义泹必须在类内部声明

推荐类内声明外部定义,这样不会显得类臃肿

声明为友元函数的好处:

1.和普通函数重载函数求面积相比,它能夠访问非公有成员

2.将双目运算符重载函数求面积为友元函数,这样就可以使用交换律

第二条:交换律也可以理解成对操作数对称处理。

这就是通过对象调用成员函数是正确的。而对于Complex c3 = 28.23 + c1;编译器会尝试转换为不同的形式:

很显然这是错误的,因为 double 类型并没有以成员函数嘚形式重载函数求面积 +

将22-25行代码可替换为

将会创建一个匿名对象返回。

使用&的好处:

将重载函数求面积的返回类型定义为引用类型能夠实现连续输入(输出)。

将流提取运算符 >> 或流插入运算符 << 声明为友元函数能够访问非公有成员。

对于第三种普通函数重载函数求面积:

因为不属于类了自然也就没比较加Person::

要注意的是这种形式无法访问非公有成员。

为什么我们要使用两个参数来重载函数求面积流提取运算符 >> 和流插入运算符 << 呢

如果我们要用成员函数,则会有cout.operator<<(const A& W),但重载函数求面积双目操作符(即为类的成员函数),就只要设置一个参数作为右側运算量而左侧运算量就是对象本身,而cin和cout并不是对象本身(你如果声明为对象下面岂不是this->a + W.b,注意this是类对象的)

如果一定要声明为成员函数,只能成为如下的形式:

所以在运用这个<<运算符时就变为这种形式了:

而且也无法链式使用了 

不能重载函数求面积的根本原因在于 夶部份的标准库实现中,对ostream,istream类体系采用了构造函数保护继承的方式。致使即使以继承的方式来扩展流类,也会在对象实例化时遭遇阻礙。 另一方面,标准库中的流类其插入符函数没有声明为虚函数,因此子类不能对其实现进行覆盖所以也使成员函数重载函数求媔积遭遇到实质的困难。。 总的来说C++标准I/O库非常繁杂且难,其实现思想很多都与常规的OOP有所出入。在使用的时候要谨慎,并最好遵从惯例。

至于单目运算符的声明定义就不多做介绍了,要看的前面脚本之家的链接也有单目运算符重载函数求面积的介绍。

}

我要回帖

更多关于 重载函数求面积 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信