在正常情况下,系统会为每一个类自动生成一个默认的完成上述功能的赋值运算符,当然,这种赋值只限于由一个类类型说明的对象之间赋值。图4.3对象内存分配可以重载运算符“=”来解决这个问题。在赋值运算符连用时,如s3=s2=s1,应使用方式2实现“=”运算符重载。...
2023-11-07 理论教育
在正常情况下,系统会为每一个类自动生成一个默认的完成上述功能的赋值运算符,当然,这种赋值只限于由一个类类型说明的对象之间赋值。图4.3对象内存分配可以重载运算符“=”来解决这个问题。在赋值运算符连用时,如s3=s2=s1,应使用方式2实现“=”运算符重载。...
2023-11-07 理论教育
在C++程序中建立和删除堆对象使用两个运算符:new和delete。下面介绍通过new运算符实现这一功能,它与delete运算符一起使用,以达到直接进行动态内存分配和释放的目的。◇用new也可指定分配的内存大小,例如:◇new可以为数组分配内存,但当释放时,必须告诉delete数组有多少个元素。...
2023-11-07 理论教育
所谓运算符重载就是对已有的运算符赋予多重含义,使同一个运算符作用于不同类型的数据时导致不同的行为,即完成不同的运算功能。在C++语言中,可以将运算符看着函数,运算符重载是通过运算符重载函数来实现的。C++运算符重载需要遵循的相关规则如下:不是所有的运算符都能重载,可以重载的运算符见表4.1所示,不能重载的运算符见表4.2所示。表4.1C++中可以重载的运算符表4.2C++中不能重载的运算符...
2023-11-07 理论教育
析构函数被系统自动调用分两种情况。分析以下程序的执行结果。解:本程序执行结果如下:调用带参构造函数矩形s1的面积=153调用无参构造函数矩形s2的面积=0调用了析构函数!...
2023-11-07 理论教育
内联函数不能是虚函数,因为内联函数是不能在运行中动态确定其位置的。即使虚函数在类的内部定义,编译时仍将其看作是非内联的。声明虚析构函数的目的在于:使用delete运算符删除一个对象时,能确保析构函数被正确地执行。如果不相同,则被派生类虚函数的参数类型强制转换为基类中虚函数的参数类型。...
2023-11-07 理论教育
因此,局部变量只能在定义它的函数体或块内部使用,而不能在其他函数或块内使用这个变量。在不同的函数中可声明具有相同变量名的局部变量,系统会自动进行识别。这种全局变量称为“外部变量”。例如:上述程序的输出结果为8,因为main函数中的局部变量a屏蔽了全局变量a。static局部变量在整个程序结束才会释放其存储空间。...
2023-11-07 理论教育
静态成员函数与静态数据成员类似,也是属于类的。与一般成员函数类似,静态成员函数也有访问限制,私有静态成员函数不能由外界访问。解:本程序的执行结果如下:s=5程序中定义对象a时,通过构造函数使静态数据成员n=2,在定义对象b时,通过构造函数使静态数据成员n=5,再执行MyClass2∷add()语句使全局变量s=5。这样共执行构造函数5次,n累计为5。...
2023-11-07 理论教育
当重载输出运算符“<<”用于输出时,相当于创建一个插入符函数。“函数体”中给出实现该插入符重载目的的代码。该语句等价于:cout<>”在C++中,“>>”运算符称为提取运算符,对它进行重载的函数称为提取符函数。...
2023-11-07 理论教育
◇变量名不要与C++中的库函数名、类名和对象名相同。表1.3C++的标准保留字例如,以下都是有效的变量名:M3,count,_fnum,str_12.变量定义和声明C++中,变量使用之前一定要定义或声明,变量定义的格式一般为:其中,类型指出变量所存放的数据的类型;变量名是任意合法的变量名;注释指明该变量的含义和用途;修饰符进一步描述了变量的使用方式。...
2023-11-07 理论教育
前面已经学习过,在C++程序中建立和删除对象使用两个运算符new和delete。new与delete两个运算符用于动态管理内存,在大多数情况下,它们是非常有效的。这就要重载运算符new与delete,使其按照要求完成对内存的管理。而且,无论是否使用关键字static进行修饰,重载了的new和delete均为类的静态成员函数。在带有“参数表”时,应注意使用重载new的方式。程序执行结果如下:new1 operatordelete operatornew2 operatordelete operator...
2023-11-07 理论教育
类是一种用户自定义的数据类型,定义一个类,就是描述类名及其成员。“类名”是一个标识符,用于唯一标识一个类。分析以下声明MyClass类的组成。该类的描述如图2.1所示,其中大圆圈中列出的函数名均为公有函数名,小圆圈中列出的是所有数据成员。图2.1MyClass类描述注意:因为类是一种数据类型,在声明一个类时系统并不会为其分配内存空间,所以在定义类中的数据成员时,不能对其进行初始化。...
2023-11-07 理论教育
派生类的对象不仅存放了在派生类中定义的非静态数据成员,而且也存放了从基类中继承下来的所有非静态数据成员,因而在派生类中存放的这些从基类继承下来的数据存储又称派生类对象的子对象。图6.8对象a和b的存储空间分配与非静态数据成员存储方式不同,基类与派生类的静态数据成员与成员函数是共享的。当派生类B对象使用从基类A继承下来的setvaluea和dispa成员函数时,编译系统会自动将这一调用映射到基类存放的代码。...
2023-11-07 理论教育
程序的执行结果如下:Point复制构造函数被调用Point复制构造函数被调用Point复制构造函数被调用Point复制构造函数被调用Distance构造函数被调用(1,2)和(8,6)两个点的距离:8.06226...
2023-11-07 理论教育
图2.3对象stu1和stu2实际上,类Student的所有成员函数放在公用区中,每个函数代码有一个地址,类Student的每个对象中只存放自己的数据成员值和指向公共区中对应函数的地址,也就是说,类的成员函数是共享的,如图2.4所示,这种对象的存储空间分配方式不仅节省了存储空间,而且各个对象的数据成员分别存放,互不相干。...
2023-11-07 理论教育
C++的基本数据类型有bool(布尔型)、char(字符型)、int(整型)、float(浮点型)、double。另外,C++中增加了一个布尔类型bool,其值为true(真)或false(假)。浮点数和整数不同的地方是浮点数有小数部分,如12.34。C++提供的5种基本数据类型,其数据的长度和范围会随处理器的类型和编译器类型的不同而异。C++的修饰符有short、long和signed、unsigned。表1.1大多数32位系统内置数据类型范围续表...
2023-11-07 理论教育
常量是在程序中其值不能改变的量。C++支持4种类型的常量:整型、浮点型、字符型和枚举型。如以下浮点数是合法的:3.14159F0.121.0E-32.f3.字符常量与字符串常量C++中的字符常量常用单引号括起,如'3'、'b'和''分别表示字符3、字符b和空白字符。表1.2常用的特殊字符当0个或多个字符由双引号""括起时,就组成字符串常量。...
2023-11-07 理论教育