程序的执行结果如下:v1=(6,8)v2=(3,6)v1+v2=v1-v2=(3,2)2.重载双目运算符为类的友元函数运算符也可以重载为类的友元函数,这样,它就可以自由地访问该类的任何数据成员。假设有一个类A,对于双目运算符op,如果重载运算符op使之能够实现表达式“obj1 op obj2”,其中obj1和obj2均为A类的对象。将例4.5的类Vector中重载运算符改为友元函数实现。......
2025-09-30
前面已经学习过,在C++程序中建立和删除对象使用两个运算符new和delete。new与delete两个运算符用于动态管理内存,在大多数情况下,它们是非常有效的。但有些情况下我们需要自已管理内存,以克服new与delete的不足。这就要重载运算符new与delete,使其按照要求完成对内存的管理。
注意:new和delete只能被重载为类的成员函数,不能重载为友元。而且,无论是否使用关键字static进行修饰,重载了的new和delete均为类的静态成员函数。
运算符new重载的一般格式如下:
void类名∷operator new(size_t,参数表);
new重载应返回一个无值型的指针,且至少有一个类型为size_t(size_t是C++系统内置类型)的参数。若该重载带有多于一个的参数,则其第一个参数的类型必须为size_t。
在带有“参数表”时,应注意使用重载new的方式。例如,若一个类X有如下重载new的成员函数:
则使用重载new的方式如下:
XpX=new(1,2,3)X;
运算符delete重载的一般格式如下:(https://www.chuimin.cn)
void类名∷operator delete(void,参数表);
【例4.14】分析以下程序的执行结果。
解:上述程序中,类MyClass中设计两个new重载成员函数和一个delete重载成员函数,其中,new重载成员函数中有一个带有“参数表”。在main中建立对象s2时调用这个带参数表的成员函数。程序执行结果如下:
new1 operator
delete operator
new2 operator
delete operator
相关文章
程序的执行结果如下:v1=(6,8)v2=(3,6)v1+v2=v1-v2=(3,2)2.重载双目运算符为类的友元函数运算符也可以重载为类的友元函数,这样,它就可以自由地访问该类的任何数据成员。假设有一个类A,对于双目运算符op,如果重载运算符op使之能够实现表达式“obj1 op obj2”,其中obj1和obj2均为A类的对象。将例4.5的类Vector中重载运算符改为友元函数实现。......
2025-09-30
运算符重载函数的调用格式与普通成员函数的调用格式类似,以双目运算符重载成员函数为例,其调用格式如下:左运算对象双目运算符右运算对象例如:对于前面的Complex,设计如下主函数:其中,“s3=s1+s2;”和“s4=s1-s2;”两个语句就是调用运算符重载函数。该函数执行完毕,释放tmp对象。......
2025-09-30
所谓运算符重载就是对已有的运算符赋予多重含义,使同一个运算符作用于不同类型的数据时导致不同的行为,即完成不同的运算功能。在C++语言中,可以将运算符看着函数,运算符重载是通过运算符重载函数来实现的。C++运算符重载需要遵循的相关规则如下:不是所有的运算符都能重载,可以重载的运算符见表4.1所示,不能重载的运算符见表4.2所示。表4.1C++中可以重载的运算符表4.2C++中不能重载的运算符......
2025-09-30
程序设计是指设计、编写和调试程序的方法与过程。由于程序是软件的本体,因此软件的质量主要通过程序的质量体现,因此,研究一种切实可行的程序设计方法至关重要。继承是面向对象程序设计方法的一个重要标志,利用继承机制可以大大提高程序的可重用性和可扩充性。......
2025-09-30
在C++中,数组和指针密切相关,几乎可以互相使用。数组名字可以认为是常量指针,它指向存放数组第一个元素的内存地址。指针可以用于完成任何涉及数组下标的操作。实际上,数组下标表示法在编译期间将转换为指针表示法,所以用指针方式来书写数组下标表达式可以节省编译时间。如果再定义一个字符指针:char*pname=name;则name[i]、*和*具有相同的值,都是数组第i+1个元素的值。分析以下程序的执行结果。......
2025-09-30
在C++程序中建立和删除堆对象使用两个运算符:new和delete。下面介绍通过new运算符实现这一功能,它与delete运算符一起使用,以达到直接进行动态内存分配和释放的目的。◇用new也可指定分配的内存大小,例如:◇new可以为数组分配内存,但当释放时,必须告诉delete数组有多少个元素。......
2025-09-30
图2.3对象stu1和stu2实际上,类Student的所有成员函数放在公用区中,每个函数代码有一个地址,类Student的每个对象中只存放自己的数据成员值和指向公共区中对应函数的地址,也就是说,类的成员函数是共享的,如图2.4所示,这种对象的存储空间分配方式不仅节省了存储空间,而且各个对象的数据成员分别存放,互不相干。......
2025-09-30
类的每一个成员函数都有一个隐含的特殊指针,通常称为this指针,this指针的类型就是成员函数所属的类型。通常不显式使用this指针。this指针是C++实现封装的一种机制,它将对象和该对象调用的成员函数连接在一起,在外部看来,每个对象都拥有自己的成员函数。this指针一般用于返回当前对象自身。程序的执行结果如下:s1∶n=2s2∶n=1s3∶n=3this指针大量用于运算符重载成员函数设计中,这将在后面详细介绍。......
2025-09-30
相关推荐