类模板的成员函数被认为是函数模板,也称为类属函数。因此,当给出一个类模板的成员函数的定义时,必须遵循函数模板的定义。在类模板中,可以用类型参数名表示数据成员的类型,也可以表示成员函数返回值、形参和局部变量的类型。类模板定义中的类型参数可带默认值。说明以下类模板的功能。......
2023-11-07
类是一种用户自定义的数据类型,定义一个类,就是描述类名及其成员。而对于成员,还要描述其可见性。类的一般格式如下:
其中,“class”是定义类的关键字,它只声明了一种数据类型,并没有分配内存空间。“类名”是一个标识符,用于唯一标识一个类。一对花括号内是类成员的声明部分,也就是声明该类的所有成员。类的成员包含数据成员和成员函数两种。
把类声明中仅包含数据成员和成员函数声明的部分(在{}内)称为类界面(又叫类体),一对花括号表示类的作用域,而各成员函数实现的部分称为类实现。
注意:在类声明中最后右括号后面的分号(;)是语法的一部分,因此,漏写该分号会导致语法错误。
在声明类时有如下规则:
◇如果类的成员是数据成员,可以像声明变量一样声明它,数据成员描述对象所持有的值,通常称为对象的属性。
◇如果类的成员是函数,一般是使用函数原型来声明它。(www.chuimin.cn)
◇如果类的成员是函数,则它可以访问类中的任何成员——数据成员和成员函数。
【例2.1】分析以下声明MyClass类的组成。
解:从MyClass类定义看出,该类包含两个私有数据成员x和y,它们都是int型的,以及两个公有成员函数setvalue()和display()。该类的描述如图2.1所示,其中大圆圈中列出的函数名均为公有函数名,小圆圈中列出的是所有数据成员。
设计类成员的一般规则是:需要从类的外部访问的成员应该定义成公有的,任何不应该从外部来访问的成员应该定义成私有的(起到“信息隐藏”的作用)。所以上例中的setvalue和display函数可以作为该类的接口。
图2.1 MyClass类描述
注意:因为类是一种数据类型,在声明一个类时系统并不会为其分配内存空间,所以在定义类中的数据成员时,不能对其进行初始化。
有关C++程序设计基础教程的文章
类模板的成员函数被认为是函数模板,也称为类属函数。因此,当给出一个类模板的成员函数的定义时,必须遵循函数模板的定义。在类模板中,可以用类型参数名表示数据成员的类型,也可以表示成员函数返回值、形参和局部变量的类型。类模板定义中的类型参数可带默认值。说明以下类模板的功能。......
2023-11-07
图6.18类层次图程序如下:本程序的执行结果如下:圆桌属性数据:高度:0.6米桌面半径:0.5米面积:0.785平方米颜色:白色设计一个虚基类Person,包含姓名和年龄私有数据成员以及相关的成员函数,由它派生出领导类Leader,包含职务和部门私有数据成员以及相关的成员函数,再由Person派生出工程师类Engineer,包含职称和专业私有数据成员以及相关的成员函数,然后由Leader和Engineer类派生出主任工程师类Chairman。......
2023-11-07
程序设计是指设计、编写和调试程序的方法与过程。由于程序是软件的本体,因此软件的质量主要通过程序的质量体现,因此,研究一种切实可行的程序设计方法至关重要。继承是面向对象程序设计方法的一个重要标志,利用继承机制可以大大提高程序的可重用性和可扩充性。......
2023-11-07
编写一个程序,声明一个点类Point,实现点的偏移,==,!其中各个成员函数就是实现这种转换并完成相应的矩阵运算功能。程序的执行结果如下:A矩阵:123456B矩阵:123456C矩阵:142536A+B矩阵:2468 10 12A-B矩阵:000000A*C矩阵:14 3232 77虽然这种转换比较复杂,但解决了矩阵运算通用性问题。......
2023-11-07
一个统一的公共接口必须经过精心的分析和设计。将这些函数作为基类的虚函数,它们定义了一个统一公共接口。利用虚函数,可在基类和派生类中使用相同的函数名定义函数的不同实现,从而实现“一个接口,多种方式”。设计一个公共基类Container为抽象类(界面),Container类中声明求表面积和体积的纯虚函数。由Container抽象类派生出三个类即Cube、Sphere和Cylinder,在这三个类中都具有求表面积和体积的重定义版本。......
2023-11-07
本节采用类模板设计几个通用的数据结构,这种类属程序设计方法不仅提高了程序的可靠性,而且大大提高了程序设计效率。抽象数据类型线性表的定义如下:设计满足上述定义的List
2023-11-07
声明函数模板的一般格式如下:template<模板参数表>函数返回值类型函数模板名(形参表)函数模板定义由关键字template开头,表示声明一个模板。模板参数表写在尖括号<>中,参数一般由关键字class或typename后加一个标识符构成。Class和typename的意义相同,表示后面的标识符是一个参数类型,代表一个潜在的标准类型或用户定义的类型。例如,定义max函数模板求两个数中的较大者。如下面的声明是错误的:可以看出,用函数模板比函数重载更方便,程序更简洁。......
2023-11-07
需要注意的是,基类指针虽然获取了派生类对象的地址,但只能访问派生类从基类继承的成员,不能访问派生类中新增的成员,除非对基类指针强制类型转换调用派生类的成员函数。......
2023-11-07
相关推荐