A.类模板的成员函数被认为是函数模板,也成为类属函数
B.类模板的成员函数的定义与类的成员函数的定义一样
C.类模板的成员函数通过类模板调用
D.类模板的成员函数可以在类外定义,但要符合函数模板定义的规范
A.类定义中只能说明函数成员的函数头,不能定义函数体
B.类中的函数成员可以在类体中定义,也可以在类体之外定义
C.类中的函数成员在类体之外定义时必须要与类声明在同一文件中
D.在类体之外定义的函数成员不能操作该类的私有数据成员
A.友元函数可以是普通函数,可以是其他类的成员函数,也可以是本类的成员函数
B.友元函数可以访问多个类的私有成员和保护成员
C.在调用友元函数的时候需要使用“.”运算符
D.如果友元函数是某个类的成员函数,在定义这个友元函数的时候要使用类前缀
解决问题的一种方法是使用2-d树。2-d树类似于二叉搜索树,不同之处在于:
◇偶数层用keyl来比较:在该层上每一结点的keyl都大于共左子树中任一结点的key1,都不大于其右子树中任一结点的keyl。
◇奇数层用key2来比较:在该层上每一结点的key2都大于其左子树中任一结点的key2,都不大于其右子树中任一结点的key2.
◇树的根结点处于第0层。每次插入或搜索都从根结点出发,逐层比较。新结点应作为叶结点插入,
臂如,可以将不同人的姓和名(假设没有同名同姓者)分别为keyl和key2,建立一棵2-d树.作为例子,图7-27就是将清华大学的历任校长,按共任职年代的先后次序(周白齐、唐国安、周春、金邦正、曹云祥、严鹤龄、罗家伦、梅贻琦、叶企孙、蒋南翔、高景德、张孝文、王大中、顾秉林),顺序插人而形成的一棵2-d树。
(1)若命名树结点的类名为kdTNode,树的类名为kdTrce,关键码keyl的数据类型为T1,关键码key2的数据类型为T2,试写出2-d树的模板类结构定义,包括构造函数、复制构造函数、求树高、按给定值搜索、查找左子女、查找右子女、查找父结点、插人、删除等函数。此外,还要定义对树结点私有数据成员的存取函数(只要求写出函数的原型,不必给出代码实现)。
(2)基于上述定义,写出其中一个成员函数的实现代码:从根开始搜索关键码keyl和
key2与给定值vall和val2匹配的结点。函数的形式为:
若搜索成功,则函数返回true值,同时引用参数pt指向搜索到的结点,另引用参数pr指向结点*pt的父结点。此时,若树中只有一个结点,pr为NULL。
若搜索不成功或树为空,则函数返回false值,同时参数pt为NULL,在树非空时,pr则指向搜索失败前指针pt最后到达的结点;当树为空时,pr为NULL。
A.在类中用关键词friend声明友元函数
B.友元函数说明的位置只能在类的public区
C.友元函数的定义只能放在类的外部
D.友元函数不是类的成员函数
A.在基类定义的public成员在公有继承的派生类中可见,也能在类外被访问
B.在基类定义的public和protected成员在私有继承的派生类中可见,在类外可以被访问
C.在基类定义的public和protected成员在保护继承的派生类中可见
D.在派生类中不可见的成员要变成可访问的,需要进行访问声明
A.构造函数的名字必须与类名一致。
B.定义构造函数时,需要使用void关键字。
C.构造函数可有返回值,也可以没有返回值。
D.构造函数内部声明的变量,在外部也可以被使用。
A.实例变量是类的成员变量
B.实例变量用关键字static声明
C.在方法中定义的局部变量在该方法被执行时创建
D.局部变量在使用前必须被初始化