第五章友元
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、const修饰符的语义是_________。
答案修饰在它左边出现的类型描述符
3、下面的类定义了拷贝初始化构造函数,请完成该类的定义和实现。
Class MyClass
{
public:
MyClass(int xx=0,int yy=0){X=xx;Y=yy;}
______ ①______ ;___ //拷贝初始化构造函数
private:
int X,Y;
};
MyClass::______ ②_________ //拷贝初始化构造函数的实现
{
X=______ ③______ ;
______ ④______ ;
}
答案①MyClass(MyClass &m)②MyClass(MyClass &m)③m.X ④Y=m.Y
4、当需要使用mt修饰的成员函数改变类中的数据成员时,可以使用_________个数据成员。答案此题不做
5、当一个类的成员是某一个类的对象时,该对象就被称为_________。
答案内嵌对象成员
6、当一个类对象的成员函数被调用时,该成员函数的_________指向调用它的对象。
答案this指针
7、有如下定义语句: MyClass p[10];则系统自动调用该类构造函数___①___次。当类对象数组p离开它的作用域时,系统自动调用该类析构函数___②___次。
答案10,10
8、指向数组的指针是指_________。
答案该指针指向一个数组,可以指向任何一个数组元素
9、有如下定义语句:MyClass *p[10];,则当类对象数组指针p离开它的作用域时,系统自动调用该类析构函数_________次。
答案0
10、下列程序通过把类Distance定义为类Point的友元类来实现计算两点之间距离的功能。请完成该程序。
#include iostream.h>
#include
class Point
public:
______ ①______ ;
Point (______ ②______ )
{
X=a;
Y=b;
}
void Print()
{
cout<<"X="< cout<<"Y="< } private: float X,Y; }; class Distance { public: float Dis(Point &p,Point &q); }; f1oat Distance::Dis(Point &p,Point &q) { float result; ______ ③______ ; cout< return result; } void main() { Point p(10,10),q(20,20); Distance d; d.Dis(p,q); } 答案 11、如果一个类是聚集类,即该类定义了其他类的子对象,则该类的对象和子对象先被初始化的是_________。 答案该类的子对象 12、下列程序在构造函数和析构函数中申请和释放类的私有成员,请完成该类的实现。Class MyClass public: MyClass(int a); ~MyClass(); pnvate: int *X; }; MyClass::MyClass(int a) { ______ ①______ ; } MyClass::~Myclass() { ______ ②______ ; } 答案X=new int(a) delete X 13、常量对象应_________,并且不能在生成之后修改。 答案定义时初始化 14、指针数组是指_________。 答案该数组中的每个元素都是指针 15、定义在类中的类被称为___①___,定义了类的类被称为___②___。 答案此题了解:内嵌类包容类 16、有如下定义语句:MyClass *p;,则执行p=new MyClass; 语句时,将自动调用该类的___①___。执行delete p;语句时,将自动调用该类的___②___。 答案构造函数析构函数 17、如果一个数组中的每个元素都是同一个类的对象,则该数组被称为_________。 答案对象数组 18、在C++语言中,每个类都有一个隐含的指针叫做___①___指针。该指针指向___②___。答案this 正在调用成员函数的对象 1、类MyClass的定义如下: class MyClass { public: MyClass(){value=0;} setV ariable(int I){value =I;} private: int value; }; 则对下列语句序列正确的描述是_________。 MyClass*p,my;p=&my; A)语句p=&my;是把对象my赋值给指针变量p B)语旬MyClass *p,my;会调用两次类MyClass的构造函数 C)对语句*p.SetV ariable(5)的调用是正确的 D)语句p->SetV ariable(5)与语句my.SetV ariable(5)等价 答案 2、对于常成员函数,下面描述正确的是_________。 A)类的成员函数可以操作常对象 B)类的成员函数不能操作常对象 C)只有常成员函数可以操作常对象 D)在常成员函数中,常对象可以被更新 答案 3、包容类Contain和内嵌类Embed定义如下: #include class Contain { private: int x; protected: int z; public: class Embed { private: int y; public: Embed(){y=100;} int Embed_Fun(); }MyEmbed; int Contain_Fun(); }; 对上面的定义,正确的描述是_________。 A)定义类Embed对象的语句是:Contain::Embed embed; B)类Contain的成员函数Contain_Fun()中可以用MyEmbed.y的方式访问类Embed的私有成员y C)类Embed的成员函数Embed_Fun()中可以直接访问类Contain的私有成员x D)类Embed的成员函数Embed_Fun()中可以直接访问类Contain的保护成员z 答案 4、类MyClass的定义如下: class MyClass