python有友元函数吗 友元函数算成员函数吗
python类和函数的区别
一、主体不同
10多年建站经验, 成都网站建设、做网站客户的见证与正确选择。创新互联公司提供完善的营销型网页建站明细报价表。后期开发更加便捷高效,我们致力于追求更美、更快、更规范。
1、类:是面向对象程序设计实现信息封装的基础。
2、函数:是指一段在一起的、可以做某一件事儿的程序。也叫做子程序、(OOP中)方法。
二、特点不同
1、类:是一种用户定义的引用数据类型,也称类类型。每个类包含数据说明和一组操作数据或传递消息的函数。类的实例称为对象。
2、函数:分为全局函数、全局静态函数;在类中还可以定义构造函数、析构函数、拷贝构造函数、成员函数、友元函数、运算符重载函数、内联函数等。
三、规则不同
1、类:实质是一种引用数据类型,类似于byte、short、int(char)、long、float、double等基本数据类型,不同的是它是一种复杂的数据类型。
2、函数:函数必须声明后才可以被调用。调用格式为:函数名(实参)调用时函数名后的小括号中的实参必须和声明函数时的函数括号中的形参个数相同。
参考资料来源:百度百科-函数
参考资料来源:百度百科-类
python3.6为什么用divmod()函数不能对复数运算?
程序简化为直接创建一个临时的无名对象作为返回值; .real .imag);c2)
{
complex c;complex(real*i, imag*i);
}
complex complex::operator /(int i)
{
return complex(real / i, imag / i);
}
void complex::display()
{
cout "(" real "," imag "i)" endl;
}
int main()
{
complex c1(1, 2), c2(3, 4), c3;
int i = 5;
cout "c1=";
c1.display();
cout "c2=";
c2.display();
c3 = c1 + c2;
cout "c1+c2=";
c3.display();
c3 = c1 - c2;
cout "c1-c2=";
c3.display();
c3 = c1*c2;
cout "c1*c2=";
c3.display();
c3 = c1 / c2;
cout "c1/c2=";
c3.display();
cout "i=" i endl;
c3 = c1 + i;
cout "c1+i=";
c3.display();
c3 = c1 - i;
cout "c1-i=";
c3.display();
c3 = c1*i;
cout "c1*i=";
c3.display();
c3 = c1 / i;
cout "c1/i=";
c3.display();
return 0;
}
;c, c;c2.real,只不过是因为前面涉及到了实部和虚部操作;
return return complex
{
public:
complex(){ real = complex operator/(complex = i; }
complex operator-(complex imag);i)
{
.real*c2;complex(double i);
complex r;r::operator *(int ::operator-(complex
i)
{
.real c2)
{
complex = real*c2.real - //有参和无参的构造函数
c2.real;(c2;complex;complex(real imag*c2;operator*(complex complex;
}
complex c.imag .imag*c2;operator+(int .real i;i);
void display();
private:
double real;complex operator+(complex i);
complex 。
c2)
{
complex c2.imag;return c;i)
{
return complex(real - complex;-(int //当运算符重载为友元函数的时候,参数的个数与原来的操作数目是一样的
.real imag :operator imag;
};
//不明白为什么这里的return不能像后面复数与整数相加时的return.
//解答;+ c2.imag) / c,函数的参数的个数要比原来的操作数少一个(后置“++”、“-”除外);
+ i, imag);
}
complex complex:;c;c::operator / ::operator *(complex return return ::operator +(int c2.imag*c2.imag);
c.imag = c2)
{
complex c2);
complex complex;
,因此重新构造一个复数类的对象会使程序更加明了。
//后面只是用到了实部,因此不需要浪费内存空间,重新申请一个新的复数类的对象(乘除除外);
}
//复数与整数之间的操作
complex i){ real = imag
::operator+(complex .imag;
c.imag = i);
complex .real real*c2;
c2);//运算符的重载; imag*c2;
c;c;c2);c;(imag*c2.real - / (c2.real*c2.real + double + imag*c2.imag) .real = (real*c2;return c;= real + .real
complex;(complex .imag ,因为成员函数都是通过该类的某个对象来访问的;
}
complex ,程序的运行效率更高
//复数和复数的操作运算
complex
= 0; } double + real*c2.imag;
}
complex c;
= imag + c2.imag;//当运算符重载为类的成员函数时的时候;operator-(int = imag - = real - ,
}
complex c;complex:还不都是一样的;operator/(int operator*(int c2);
complex 。因为本身的‘+’只能是对基本类型数据进行操作,现在想要对复数类也进行操作。那么必须要重载,重新定义其为我们需要的功能
,成员函数中有一隐含的参数this指针,this指针
//指向当前的对象,而当前的对象本身就是其中的一个操作数;0;namespace std;
/*
1.同一个运算符可以代表多个不同的功能,编译系统是根据操作的数据来判别该执行具体哪一个功能的
*/
class
#includeiostream
using
友元函数有什么作用?
友元函数是可以直接访问类的私有成员的非成员函数。它是定义在类外的普通函数,它不属于任何类,但需要在类的定义中加以声明,声明时只需在友元的名称前加上关键字friend,其格式如下:
friend 类型 函数名(形式参数);
友元函数的声明可以放在类的私有部分,也可以放在公有部分,它们是没有区别的,都说明是该类的一个友元函数。 一个函数可以是多个类的友元函数,只需要在各个类中分别声明。 友元函数的调用与一般函数的调用方式和原理一致。
拓展资料:
使用说明
1、友元函数是类外函数,声明可以放在类的私有或者公有,且都没有区别;
2、直接调用友元函数不需要通过对象或者指针;
3、友元函数没有this指针,且不能被继承;
4、友元函数声明形式 friend + 普通函数声明。
参考资料:友元函数
新闻标题:python有友元函数吗 友元函数算成员函数吗
当前URL:http://scyanting.com/article/docgseh.html