C++复习题1

第七章类与对象
1.填空题
(1)在C++中,类成员有3种访问权限,它们分别是___________、___________和___________。其中_________提供给用户的接口功能;_________用来描述对象的属性。
(2)类中有一种特殊的成员函数,它主要用来为对象分配内存空间,对类的数据成员进行初始化,这种成员函数是___________。
(3)析构函数的作用是___________。
(4)类是对象的___________,而对象是类的具体___________。
(5)如果在类中没有明确定义析构函数,清除对象的工作仍由___________来完成,原因是___________。
(6)如果想将类的一般成员函数说明为类的常成员函数,则应该使用关键字___________说明成员函数。
(7)当一个类的对象成员函数被调用时,该成员函数的___________指向调用它的对象。
(8)被声明为const的数据成员只允许声明为___________的成员函数访问。
(9)一个类中若包含另一个类的对象,则这种情况称为类的___________,这个对象称为___________。
(10)若外界函数想直接访问类的私有数据成员,则必须把该函数声明为类的___________。
(11)一个类A若声明为另一个类B的友元类,则意味着类A中的所有成员函数都是类B的___________。
(12)将类中的数据成员声明为static的目的是___________。
(13)类的静态数据成员的初始化工作要放在___________。
(14)若有以下程序结构,该程序运行时调用了___________次构造函数,调用了___________次析构函数。
class Box
{……};
void main()
{
Box A,B,C;
}
(15)下列程序的执行结果是___________。
#include<iostream.h>
class A
{
int a;
double b;
public:
A(int x=100,double y=1.2){a=x;b=y;}
void show(char *pt)
{
cout<<pt<<":"<<endl;
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
}
};
void main()
{
A obj1,obj2(100,3.5);
obj1.show("obj1");
obj2.show("obj2");
污秽等级
A *p;
p=&obj1;
p->show("p->obj1");
(*p).show("(*p)obj1");
p=&obj2;
p->show("p->obj2");
(*p).show("(*p)obj2");
p=new A;
p->show("p->new");
delete p;
}
(16)分析下列程序的输出结果。
#include <iostream.h>
class MyCla
{
private:
int x,y;
public:
MyCla();
MyCla(int xx);
MyCla(int xx,int yy);
MyCla(MyCla &);
void Display();
void Set(int, int);
~ MyCla();
};
MyCla:: MyCla()
{
cout<<"执行无参构造函数:" ;
x=0;y=0;
cout<<"x="<<x<<"y="<<y<<endl;
}
MyCla:: MyCla(int xx)
{
cout<<"执行一个参数构造函数:" ;神经卡压综合征
x=xx;y=0;
cout<<"x="<<x<<"y="<<y<<endl;
}
MyCla:: MyCla(int xx,int yy)
{
cout<<"执行两个参数构造函数:" ;
x=xx;y=yy;
cout<<"x="<<x<<"y="<<y<<endl;
}
MyCla:: MyCla(MyCla &a)
{
cout<<"执行复制构造函数:" ;
x=a.x;y=a.y;
cout<<"x="<<x<<"y="<<y<<endl;
}
void MyCla:: Display()
{
cout<<"执行显示函数:" ;
cout<<"x="<<x<<"y="<<y<<endl;
}
void MyCla:: Set(int xx=0,int yy=0)
{
cout<<"执行设置函数:" ;
x=xx;y=yy;
cout<<"x="<<x<<"y="<<y<<endl;
}
MyCla::~MyCla ()
{
cout<<"执行析构函数:" ;
cout<<"x="<<x<<"y="<<y<<endl;
}
错误!未到引用源。下列主程序时的运行结果为___________。
void main()
{
MyCla a;
MyCla b(101);
MyCla c(87,98);
}
错误!未到引用源。下列主程序时的运行结果为___________。
void main()
{
MyCla a(57,28);
a.Set();
a.Set(86);
a.Display();
a.Set(24,75);
a.Display();
}
错误!未到引用源。下列主程序时的运行结果为___________。
void main()
{
MyCla a(33);
a.Set(86,543);
a.Display();
MyCla b(a);
b.Display();
}
错误!未到引用源。下列主程序时的运行结果为___________。
void main()
{
MyCla a(33);
MyCla b(223,54);
{小样本
MyCla c(38,84);
b.Display();
}
a.Display();
}
参考答案:
(1)公有成员,保护成员,私有成员,公有成员,数据成员(2)构造函数
(3)当对象被撤销时,释放该对象所占据的存储空间。(4)抽象,实例
(5)析构函数,C++编译系统会自动生成一个析构函数(6)const
(7)this指针
(8)const
(9)包含,子对象
(10)友元函数
(11)友元函数
(12)使同类对象对数据实现共享
(13)类外进行
(14)3 3
(15)obj1:
a=100
b=1.2
obj2:
a=100
b=3.5
p->obj1:
a=100
b=1.2
(*p)obj1:
a=100
b=1.2
p->obj2:
a=100
b=3.5
(*p)obj2:
a=100
b=3.5
p->new:
a=100
b=1.2
(16)
错误!未到引用源。执行无参构造函数:x=0y=0 执行一个参数构造函数:x=101y=0
执行两个参数构造函数:x=87y=98
执行析构函数:x=87y=98
我美丽的守护天使
执行析构函数:x=101y=0
执行析构函数:x=0y=0
错误!未到引用源。执行两个参数构造函数:x=57y=28 执行设置函数:x=0y=0
执行设置函数:x=86y=0
执行显示函数:x=86y=0
执行设置函数:x=24y=75
执行显示函数:x=24y=75
执行析构函数:x=24y=75
错误!未到引用源。执行一个参数构造函数:x=33y=0 执行设置函数:x=86y=543
执行显示函数:x=86y=543
执行复制构造函数:x=86y=543
执行显示函数:x=86y=543
执行析构函数:x=86y=543
执行析构函数:x=86y=543
错误!未到引用源。执行一个参数构造函数:x=33y=0 执行两个参数构造函数:x=223y=54
执行两个参数构造函数:x=38y=84
执行显示函数:x=223y=54
执行析构函数:x=38y=84
执行显示函数:x=33y=0
执行析构函数:x=223y=54
执行析构函数:x=33y=0
2.选择题
(1)以下关于类和对象的叙述错误的是()。
A. 对象是类的一个实例
B. 任何一个对象都归属于一个具体的类
C. 一个类只能有一个对象
D. 类与对象的关系和数据类型与变量的关系相似
(2)以下关于构造函数的叙述错误的是()。
A. 构造函数名必须与类名相同
B. 构造函数在定义对象时自动执行
C. 构造函数无任何函数类型
D. 在一个类中构造函数又且仅有一个
(3)以下关于析构函数的叙述错误的是()。
A. 一个类中只能定义一个析构函数
B. 析构函数和构造函数一样可以有形参
C. 析构函数不允许有返回值
D. 析构函数名前必须冠有符号“~”
(4)以下叙述正确的是()。
A. 在类中不作特别说明的数据成员均为私有类型
B. 在类中不作特别说明的成员函数均为公有类型
C. 类成员的定义必须放在类体内
D. 类成员的定义必须是成员变量在前,成员函数在后
(5)以下叙述不正确的是()。
A. 一个类的所有对象都有各自的数据成员,它们共享成员函数
B. 一个类中可以有多个同名的成员函数
C. 一个类中可以有多个构造函数、多个析构函数
D. 类成员的定义必须是成员变量在前,成员函数在后
(6)以下不属于构造函数特征的是()。
A. 构造函数名与类名相同
B. 构造函数可以重载
C. 构造函数可以设置默认参数
D. 构造函数必须指定函数类型
(7)下列函数中,是类MyClass的析构函数的是()。
A. ~Myclass();
B. MyClass();
C. ~MyClass();
D.
~MyClass(int n);
(8)以下关于友元函数的叙述中正确的是()。
A. 友元函数的实现必须在类的内部定义
B. 友元函数是类的成员函数
C. 友元函数破坏了类的封装性和隐藏性
D. 友元函数不能访问类的私有成员
(9)一个类的友元函数或友元类可以访问该类的()。
A. 私有成员
B. 保护成员
C. 共有成员
D. 所有成员
(10)下列对静态数据成员的描述正确的是()。
A. 静态数据成员不可以被类的对象调用
B. 静态数据成员可以在类体内进行初始化
C. 静态数据成员不能受protected控制符的作用
D. 静态数据成员可以直接用类名调用
参考答案:
(1)C (2)D (3)B (4)A(5)C (6)D (7)C (8)C (9)D (10)D
3.简答题
(1)在C++中,对象定义的格式是怎样的?
(2)如果某类定义了五个对象,那么会在内存中存储多少个该类的数据项的副本?多少个其成员函数的幅本?
(3)解释类和对象有什么区别?
(4)公有成员和私有成员有什么区别?
(5)说明友元关系的概念,说明友元关系的副作用?
(6)什么是构造函数和析构函数?各有哪些特点?
(7)什么是拷贝初始化构造函数?它有何作用?
(8)在C++中,对象作为函数参数与对象指针作为函数参数有何不同?
(9)什么是this指针?
(10)使用const修饰指针时,const出现的位置对功能有何影响?
(11)对象指针作函数参数和对象引用作函数参数有何区别?
(12)对象数组是怎样进行声明的?怎样建立对象数组和标志对象数组的元素?
(13)常类型有几种?如何定义它们?
(14)下列程序段建立了指针对象P与对象数组A的链接关系:int a[5], i ;
int *P=&a[0];
解释下列语句的语义:
错误!未到引用源。i=*p++;
错误!未到引用源。i=*++p;
错误!未到引用源。P=P+2;
错误!未到引用源。P=a+4;
(15)说明下面的程序中this和*this的用法。邵力子
#include<iostream.h>
class    B
{
public:伊格尔顿
B(){ a=b=0;}
B(int i,int j){a=i;b=j;}
void copy(B &aa);
void print()
{
cout<<a<<","<<b<<endl;
}
private:
int a,b;
};
void B::copy(B &aa)
{

本文发布于:2024-09-22 01:08:54,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/435090.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:函数   成员   对象   执行   下列
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议