对于下面定义的类MyClass,请在函数f()中添加对象成员把n的值修改为50。 classMyClass {

题目

对于下面定义的类MyClass,请在函数f( )中添加对象成员把n的值修改为50。

class MyClass

{

public:

MyClass(int x){n=x;}

void SetNum(int n1){n=n1;}

private:

int n;

};

void f()

{

My Class*ptr=new MyClass(45);

【12】

}

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

使用VC++6.0打开考生文件夹下的源程序文件3.cpp,其中定义了类A、A1和A2,其中A1类由A类公有派生,A2类由A1类公有派生。 (1)定义类A的构造函数,该构造函数有一个整型的参数x,在构造函数中请将x赋值给数据成员a。请在注释“//********1********”之后添加适当的语句。 (2)定义类A1的构造函数,该构造函数有两个整型的参数x和y,在构造函数中请将x赋值给数据成员b,将y作为基类A构造函数的参数值传人。请在注释“//********2********”之后添加适当的语句。 (3)定义类A2的构造函数,该构造函数有3个整型的参数x,y和z,在构造函数中请将x赋值给数据成员C,将y和z分别赋值给基类A1构造函数的参数x和y。请在注释“//********3********”之后添加适当的语句。 (4)完成类A2的成员函数show的定义,该函数调用基类成员函数,输出基类数据成员a和b及类A2自身的数据成员C的值,上述3个值在输出时以空格隔开。请在注释“//********4********”之后添加适当的语句。 程序输出结果如下: 7 3 738 注意:除在指定的位置添加语句之外,请不要改动程序的其他部分。 试题程序: include<iostream.h> classA { inta; public: //********1******** intgeta{returna;} }; classA1:publicA { intb; public: //********2******** intgetb{returnb;} }; classA2:publicA1 { intC; public: //****,****3******** voidshow { //********4******** } }; voidmain { A2a(8.3.7): cout<<a.geta<<endl: cout<<a.getb<<endl: a.show; }


正确答案:
(1)“A(intx){a=x;}”。
(2)“A1(intx,inty):A(y){b=x;}”。
(3)“A2(intx,inty,intz):A1(y,z){c=x;}”。
(4)“cout<<geta<<""<<getb<<""<<c<<endl;”。
【解 析】本题第1处要求定义类A的构造函数,该构造函数有一个整型的参数x,在构造函数中请将x赋值给数据成员a,构造函数没有返回值类型,所以应填 “A(intx){a=x;}”。第2处第3处根据继承中对象的初始化语法规则可知。第4处要求调用基类成员函数,由于都是公有继承,ge-ta、 getb都是自身类的公有函数,所以根据继承规则,在对象A2中,依然是公有的可以通过对象A2直接调用。

第2题:

使用VC6打开考生文件夹下的工程test37_3。此工程包含一个test37_3.cpp,其中定义了类Letter和Number以及Grid,其中Grid类由Letter类和Number类public派生,但三个类的定义并不完整。请按要求完成下列操作,将程序补充完整。

(1)添加类Letter的带一个参数c的构造函数,c是char型的数据,默认值为'A',该函数把参数c的值赋给类的保护成员ch,请在注释“//**1**”之后添加适当的语句。

(2)添加类Number的带一个参数n的构造函数,n是int型的数据,默认值为0,该函数把参数n的值赋给类的保护成员num,请在注释“//**2**”之后添加适当的语句。

(3)添加派生类Grid构造函数的定义,传入的参数为char型的c和血型的n,并将其分别赋值给基类的ch和num,请在注释“//**3**”之后添加适当的语句。

(4)完成派生类Grid的友元函数——“<<”运算符重载的定义,使其以格式“[g.ch,g.num]”输出,请在注释“//**4 **”之后添加适当的语句。

源程序文件test37_3.cpp清单如下:

include<iost ream. h>

class Letter

{

protected:

char ch;

public:

// ** 1 **

};

class Number

{

protected:

int num;

public:

// ** 2 **

};

class Grid : public Letter, public Number

{

public:

// ** 3 **

friend ostream& operator<<(ostream &o,Grid &g);

};

// ** 4 **

{

o << "[" << g.ch << ", "<< g.num << "]";

return o;

}

int main ( )

{

Grid g('C', 3);

cout << "Grid reference: "<< g << end1;

return 0;

}


正确答案:(1) Letter(char c='A'){ch=c;} (2) Number(int n=0){num=n;} (3) Grid(char c='A'int n=0):Letter(c)Number(n){} (4) ostream &operator(ostream &oGrid &g)
(1) Letter(char c='A'){ch=c;} (2) Number(int n=0){num=n;} (3) Grid(char c='A',int n=0):Letter(c),Number(n){} (4) ostream &operator(ostream &o,Grid &g) 解析:主要考查考生对于类和派生类的构造函数的定义以及重载为友元的运算符函-数的定义的掌握,其中(3)使用了参数列表进行变量赋值,这是派生类构造函数中经常使用的,(4)对于友元函数在类体外的定义不需要使用作用域符,而ostream类的对象引用可直接使用原来意义的符号“”进行输出。

第3题:

使用VC6打开考生文件夹下的工程test5_3。此工程包含一个源程序文件test5_3.cpp,其中定义了一个类Pn,用于求n!。请按要求完成下列操作,将程序补充完整。

(1)定义私有数据成员value(存放n)和fact(存放n!),它们都是ht型的数据。请在注释“//**1**”之后添加适当的语句。

(2)完成默认构造函数Pn的定义,使Fn对象的数据成员value值为i,fact值为1。请在注释“//**2**”之后添加适当的语句。

(3)完成函数Cal的定义,该函数计算value的阶乘,并将运算结果保存在fact中,要求使用while循环实现。请在注释“//**3**”之后添加适当的语句。

(4)将主函数补充完整,直接调用类的成员函数,在界面上输出value的阶乘值。请在注释“//**4**”之后添加适当的语句。

注意;除在指定位置添加语句之外,请不要改动程序中的其他内容。

源程序文件test5_3.cpp清单如下:

include<iostream.h>

class Fn

{

//**1**

public:

Fn(int i);

void Cal();

void disp();

};

Fn::Fn(int i)

{

//**2**

}

void Fn::Cai()

{

//**3**

fact*=i--;

}

void Fn::disp()

{

cout<<value<<"!="<<fact<<endl;

}

void main()

{

int value;

cout<<"Enter the value:";

cin>>value;

Fn A(value);

//**4**

}


正确答案:(1) int value; int fact; (2) value=i; fact=1; (3) inti=value; while(i>1) (4) A.Cal(); A.disp();
(1) int value; int fact; (2) value=i; fact=1; (3) inti=value; while(i>1) (4) A.Cal(); A.disp(); 解析:主要考查考生对类和对象的综合掌握,该题涉及类的成员对象与成员函数的定义,类成员函数的外部调用等知识点。注意(3)中while语句的使用,当满足括号中表达式的条件时,就一直执行后面或者后面花括号中的语句,

第4题:

下面是类MyClass的定义,对定义中各种语句描述正确的是( )。

class MyClass { publiC: void MyClass(int a) //①

{ x=a; ) int func(int a,int b) //②

{ x=a; y=b; } int func(int a,int b,int c=0) //③

{ x=a; y=b; z=c; } static void resetValue() //④

{ x=0; } private: int X,y,Z; };

A.语句①是类MyClass的构造函数定义

B.语句②和语句③实现类成员函数的重载

C.语句④实现对类成员变量x的清零操作

D.语句①、②、③和④都不正确


正确答案:D
解析:类的构造函数没有返回类型,所以语句①是错误的;语句②和语句③将会使函数func()的调用产生歧义;成员函数resetValue()是静态成员函数,那么它不能访问类MyClass中的非静态数据成员,所以语句④也不正确。

第5题:

下面类的定义,有( )处错误。 classMyClass {public: voidMyClass(); ~MyClass(intvahle); private: inti=0;};

A.1

B.2

C.3

D.4


正确答案:C
C。【解析】上述类的定义共有三处错误:①类的成员变量不能在定义时进行初始化;②类的构造函数不能有返回值(包括void类型);③类的析构函数不能有参数。

第6题:

使用VC6打开考生文件夹下的工程MyProj7。此工程包含一个源程序文件MyMain7.cpp。其中定义了类Sample,但类Sample的定义并不完整。

请按要求完成下列操作,将类Sample的定义补充完成:

①定义私有数据成员n,它是int型的数据。请在注释“//* *1**”之后添加适当的语句。

②完成重载构造函数Sample()的定义,使Sample对象的默认值:n=0。请在注释“//* *2* *”之后添加适当的语句。

③完成成员函数add()的类体内的定义,使成员函数返回的Sample对象的值n为两类Sample对象s1和s2的私有成员n的和。请在注释“//* *3* *”之后添加适当的语句。

④完成成员函数disp()的类外定义,使其以“n=”的格式将Sample对象的值输出到屏幕上。请在注释“* *4* *”之后添加适当的语句。

注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。

源程序文件MyMain7.cpp清单如下:

//MyMain7.cpp

include<iostream>

using namespace std;

class Sample

{

private:

//* * 1* *

public:

Sample(){}

//* *2* *

Sample add(Sample s1,Sample s2)

{

//* *3* *

}

void disp();

};

void Sample: :disp()

{

//* * 4 * *

}

int main()

{

Sample s1(10),s2(5),s3;

cout<<"s1:";

s1.disp();

cout<<"\n S2:";

s2,disp();

s3.add(s1,S2);

cout<<"\n s3.add(s1,s2)\n s3:";

s3.disp();

return 0;

}


正确答案:

第7题:

有如下类定义:classMyClass{intvalue;public:MyClass(intn):value(n){}intgerValue()const{returnvalue;}};则类MyClass的构造函数的个数是()

A、1个

B、2个

C、3个

D、4个


参考答案:A

第8题:

如下类定义中包含了构造函数和复制构造函数的原型声明,请在画线处填写正确的内容,使复制构造函数的声明完整。

class my(21ass{

private:

int data:

public::

MyClass(int value);//构造函数

MyClass(const______anotherObject); //复制构造函数


正确答案:myclass&
myclass& 解析:由拷贝构造函数的声明的结构决定,格式为:类名(const,类名&对象名){……}。

第9题:

使用VC6打开考生文件夹下的工程test36_3。此工程包含一个test36_3.cpp,其中定义了类CRectangle,但该类的定义并不完整。请按要求完成下列操作,将程序补充完整。

(1)定义类CRectangle的数据成员width和height,它们都是int型的数据。请在注释“//**1**”之后添加适当的语句。

(2)添加类CRectangle的友元函数duplicate()的声明,其返回值类型和参数类型均为Crectangle的,请在注释“//**2**”之后添加适当的语句。

(3)完成类Crectangle的成员函数set_values的定义,把传入的参数a和b分别赋值为数据成员width和height,请在注释“//**3**”之后添加适当的语句。

(4)完成派生类Crectangle的友元函数duplicate的定义,把函数中的临时对象rectres的值返回主函数,请在注释“//** 4**”之后添加适当的语句。

注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。

源程序文件test36_3.cpp清单如下:

include <iostream.h>

class CRectangle

{

// ** 1 **

public:

void set_values (int, int);

int area (void) {return (width * height);}

// ** 2 **

};

void CRectangle::set_values (int a, int b)

{

// ** 3 **

}

CRectangle duplicate (CRectangle rectparam)

{

CRectangle rectres;

rectres.width = rectparam.width*2;

rectres.height = rectparam.height*2;

// ** 4 **

}

void main ( )

{

CRectangle rect, rectb;

rect.set_values (2,3);

rectb - duplicate (rect);

cout << rectb.area()<<end1;

}


正确答案:(1) int widthheight; (2) friend CRectangle duplicate(CRectangle); (3) width=a; height=b; (4) return(rectres);
(1) int width,height; (2) friend CRectangle duplicate(CRectangle); (3) width=a; height=b; (4) return(rectres); 解析:主要考查考生对于类的定义和友元函数的掌握,其中(2)中friend是定义友元的关键字,注意声明之后的分号不能缺少(4)中从子函数中返回应该使用关键字return,只要符合返回类型的要求就可以直接使用return返回。

第10题:

有如下的类的模板定义: template class MyClass { private:T number; public:MyClass(

有如下的类的模板定义:

template <class T>

class MyClass

{

private:

T number;

public:

MyClass(T k);

};

其中构造函数MyClass()用k的值初始化数据成员n。因此在模板类体外,构造函数

MyClass应定义为【 】。


正确答案:templateclassT>/MyClassT>::MyClass(T k):number(k){}
templateclassT>/MyClassT>::MyClass(T k):number(k){} 解析:类模板的成员函数的类体外的定义以“templateclass T>”开头。

更多相关问题