if(n==1) return 1 return n*n+sum(n-1) 问题1:答案为: (A) back( NULL) (B) front==NULL EX back=NULL C) pFront-front E) PNew->nextltem=NULL back=pNew 问题2: 答:不正确。因为在类 Queueltem模板类的定义中用到了模板类 Queue,而此时 Queue还没 有定义,所以要先声明一下,告诉编译程序 Queue是一个模板类,它将在程序的其它地方 定义。如果没有这个说明,编译程序就不知道标识符 Queue代表什么样的含义了。 问题3: 答:第22行的 const修饰的是函数的参数,表示在这个函数体中不能改它所修饰的参数所 对应的实际参数的值。 第23行的cons修饰的是模板类 Queue的成员函数 is empty,它表示在函数 is empty 的函数体中不能改变任何数据成员的值 问题4: 答:析构函数中主要是释放链表中存放的各个节点的空间。因为 Queue对象在其生存期间 可能加入了很多节点,从堆中申请了一些内存空间,这些空间应该随着对象的消亡而释放掉, 所以需要在析构函数中来解放这些空间。 问题5: 语句号 对/错 四 问题1: 答:输出结果为: class b. 1 class a : haha 问题 答:不正确 问题3:类A的定义如下: private static object count ∥1.其它成员 bli AOf obj AOf object count-;i static int GetObject Countof return object count; j ∥其它函数 virtual void func(int data)i cout<<class A: "<<data<<endl; i void func(char *str)( cout<<class A: <<str<<endl; i object count的初始化语句如下if(n==1) return 1; else return n*n+sum(n-1); } 三、 问题 1:答案为: (A) back(NULL) (B) front==NULL 或 back==NULL (C) pFront=front (D) pNew->nextItem=NULL (E) back=pNew 问题 2: 答:不正确。因为在类 QueueItem 模板类的定义中用到了模板类 Queue,而此时 Queue 还没 有定义,所以要先声明一下,告诉编译程序 Queue 是一个模板类,它将在程序的其它地方 定义。如果没有这个说明,编译程序就不知道标识符 Queue 代表什么样的含义了。 问题 3: 答:第 22 行的 const 修饰的是函数的参数,表示在这个函数体中不能改它所修饰的参数所 对应的实际参数的值。 第 23 行的 const 修饰的是模板类 Queue 的成员函数 is_empty(),它表示在函数 is_empty() 的函数体中不能改变任何数据成员的值。 问题 4: 答:析构函数中主要是释放链表中存放的各个节点的空间。因为 Queue 对象在其生存期间 可能加入了很多节点,从堆中申请了一些内存空间,这些空间应该随着对象的消亡而释放掉, 所以需要在析构函数中来解放这些空间。 问题 5: 语句号 1 2 3 4 5 对/错 错 对 错 对 对 四、 问题 1: 答:输出结果为: class B: 1 class A: haha 问题 2: 答:不正确。 问题 3:类 A 的定义如下: class A{ private: static object_count; //…其它成员 public: A(){ object_count++;} ~A(){ object_count—; } static int GetObjectCount(){ return object_count; } //其它函数 virtual void func(int data){cout<<”class A: “<<data<<endl; } void func(char *str){ cout<<”class A: “<<str<<endl; } }; object_count 的初始化语句如下: int A::object_count=0;