更多"已知p是一个指向类A公有数据成员的指针,a是类A的一个对象,如果要给p"的相关试题:
[单项选择]已知一个类Sample,( )是定义指向类Sample成员函数的指针,假设类有三个公有成员:voidf1(int),void f2(int)和int a。
A. Sample*p
B. Int Samale::*pc=&Sample::a
C. Void(Sample::*Pa)()
D. Sample*P[10]
[单项选择]已知p是一个指向类Sample数据成员m的指针,s是类Sample的一个对象。如果要给m赋值为5,( )是正确的。
A. s.p=5
B. s->p=5
C. s.*p=5
D. *s.p=5
[填空题]已知f1(int)是类A的公有成员函数,并将指针p定义为可以指向函数f1的指针类型,则可以实现让p是指向成员函数f1( )的指针的语句为 【7】 。
[单项选择]若AA为一个类,a为该类的私有整型数据成员,getA( )为该类的一个非静态公有成员函数,功能是返回a的值。如果x为该类的一个对象,要在类外访问x对象中a的值,正确的访问格式为
A. A.AgetA()
[单项选择]
已知3 个类O、P 和Q,类O 中定义了一个私有方法F1 和一个公有方法F2;类P 中定义了一个公有方法F3,类P 为类O 的派生类;类Q 为类P 的派生类,它们的继承方式如下所示: class P : public O {…}; class Q : private P {…}; 在关于类P 的描述中正确的是 (43) ;在关于类Q 的描述中正确的是 (44) 。
(43)处填()。
A. 类P 的对象可以访问F1,但不能访问F2
B. 类P 的对象可以访问F2,但不能访问F1
C. 类P 的对象既可以访问F1,也可以访问F2
D. 类P 的对象既不能访问F1,也不能访问F2
[单项选择]
已知3个类R、S和T,类R中定义了一个私有方法F1和一个公有方法F2;类S中定义了一个公有方法F3;类S为类R的派生类,类T为类S的派生类。它们的继承方式如下所示:
class S: public R …;
class T: private S …;
在关于类S的描述中正确的是 (45) ;在关于类T的描述中正确的是 (46) 。
(45)处填()。
A. 类S的对象可以访问F1,但不能访问F2
B. 类S的对象可以访问F2,但不能访问F1
C. 类S的对象既可以访问F1,也可以访问F2
D. 类S的对象既不能访问F1,也不能访问F2
[单项选择]在单链表中,存储每个结点需要有两个域,一个是数据域,另一个是指针域,该指针域用于存放一个指针,此指针指向该结点的( )
A. 直接前驱
B. 直接后继
C. 开始结点
D. 终端结点
[单项选择]
已知3个类O、P和Q,类O中定义了一个保护方法F1和公有方法F2;类P中定义了一个公有方法F3,类P为类O的派生类;类O为类P的派生类,它们的继承方式如下,在关于类P的描述中正确的是 (1) ;在关于类Q的描述中正确的是 (2) 。
class P:private O(…)
class Q:protected P(…)
1()
A. 类P的对象可以访问F1,但不能访问F2
B. 类P的对象可以访问F2,但不能访问F1
C. 类P的对象既可以访问F1,也可以访问F2
D. 类P的对象既不能访问F1,也不能访问F2
[简答题]【说明】
设有一个带表头结点的双向循环链表L,每个结点有4个数据成员:指向前驱结点的指针prior、指向后继结点的指针next、存放数据的成员data和访问频度freq。所有结点的freq初始时都为0。每当在链表上进行一次L.Locate(x)操作时,令元素值x的结点的访问频度 freq加1,并将该结点前移,链接到现它的访问频度相等的结点后面,使得链表中所有结点保持按访问频度递减的顺序排列,以使频繁访问的结点总是靠近表头。
【函数】
void Locate( int &x)
{ <结点类型说明>
* p =first -> next;
while(p!=frist&& (1) )P=P->next;
if(p! =first) /*链表中存在x*/
{ (2) ;
<结点类型说明>
* current = P; /*从链表中摘下这个结点*/
Current -> prior -> next = current -> next;
Current -> next -> prior = current -> prior;
P = current -> prior; /*寻找重新插入的位置*/
While(p! =first && (3) )p=p->prior;
Current-> next = (4) ; /*插入在P之后*
Current -> prior = P;
P -> next -> prior = current;
P->next= (5) ;
}
else printf("Sorry. Not find! /n"); /*没找到*/
}
[简答题]【说明】
设有一个带表头结点的双向循环链表L,每个结点有4个数据成员:指向前驱结点的指针prior、指向后继结点的指针next、存放数据的成员data和访问频度freq。所有结点的freq初始时都为0。每当在链表上进行一次L.Locate(x)操作时,令元素值x的结点的访问频度 freq加1,并将该结点前移,链接到现它的访问频度相等的结点后面,使得链表中所有结点保持按访问频度递减的顺序排列,以使频繁访问的结点总是靠近表头。
【函数】
void Locate( int &x)
<结点类型说明>
* p =first -> next;
while(p!=frist&& (1) )P=P->next;
if(p! =first) /*链表中存在x*/
(2) ;
<结点类型说明>
* current = P; /*从链表中摘下这个结点*/
Current -> prior -> next = current -> next;
Current -> next -> prior = current -> prior;
P = current -> prior; /*寻找重新插入的位置*/
While(p! =first && (3) )p=p->prior;
Current-> next = (4) ; /*插入在P之后*
Current -> prior = P;
P -> next -> prior = current;
P->next= (5) ;
else printf("Sorry. Not find! /n"); /*没找到*/