帮助
|
留言交流
|
首 页
阅览室
馆友
我的图书馆
来自:
倚栏听舞
>
馆藏分类
配色:
字号:
大
中
小
类和对象(一)
2012-07-12 | 阅:
转:
|
分享
类和对象(一)
选择填空
在下列关键字中,用来说明公有成员的是()。
A、public
B、private
C、protected
D、frined
答案:A
2、下列的各种函数中,()不是类的成员函数。
A、构造函数
B、析构函数
C、友元函数
D、拷贝初始化构造函数
答案:C
3、作用域运算符的功能是()
A、标识作用域的级别的
B、指出作用域的范围的
C、指定作用域大小的
D、标识某个成员是属于哪个类的
答案:D
4、(B)是不可以作为该类的成员的。
A、自生类对象的指针
B、自身类的对象
C、自身类对象的引用
D、另一个对象的对象
答案:B
5、()不是构造函数的特征。
A、构造函数的函数名与类名相同
B、函数可以重载
C、函数可以设置默认参数
D、函数必须指定类型说明
答案:D
6、()是析构函数的特征。
A、一个类中只能定义一个析构函数
B、析构函数名与类名不同
C、析构函数的定义只能在类体内
D、析构函数可以有一个或多个参数
答案:A
7、通常的拷贝初始化构造函数的参数是()
A、某个象名
B、某对象的成员名
C、某个对象的应用名
D、某个对象的指针名
答案:C
8、关于成员函数特征的下述描述中,()是错误的。
A、成员函数一定是内联函数
B、成员函数可以重载
C、成员函数可以设置参数的默认值
D、成员函数可以是静态的
答案:A
9、下列静态数据成员的特征中,()是错误的。
A、说明静态数据成员时前边要加修饰符static
B、静态数据成员要在类体外进行初始化
C、引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符
D、静态数据成员不是所有对象所共有的
答案:D
10、友元的作用是()
A、提高程序的运行效率
B、加强类的封装性
C、实现数据的隐藏性
D、增加成员函数的种类
答案:A
二、判断下列描述的正确性,对的打勾,错的打叉
1、使用关键字class定义的类中默认的访问权限是私有(private)的。对
2、作用域运算符(::)只能用来限定成员函数所属的类。错
3、析构函数是一种函数体为空的成员函数。错
4、构造函数和析构函数都不能重载。错
5、说明或定义对象时,类名前面不需要加class关键字。对
6、对象成员的表示与结构变量成员表示相同,使用运算符.或->。对
7、所谓私有成员是指只有类中所提供的成员函数才能直接使用它们,任何类以外的函数对他们的访问都是非法的。错
//8、某类中的友元类的所有成员函数可以存取或修改该类中的私有成员。对
9、可以在类的构造函数中对静态数据成员进行初始化。错
10、如果一个成员函数只存取一个类的静态数据成员,则可以将该成员函数说明为静态成员函数。对
三.分析下列程序的输出结果
1、
#include
classA
{
public:
A();
A(inti,intj);
voidprint();
private:
inta,b;
};
A::A()
{
a=b=0;
cout<<”Defaultconstructorcalled.\n”;
}
A::A(intI,intj)
{
A=i;
B=j;
Cout<<”constructorcalled.\n”
}
voidA::print()
{
Cout<<”a=”<
}
voidmain()
{
Am,n(4,8);
m.print();
n.print();
}
运行该程序输出结果显示如下所示:
Defaultconstructorcall
Constructorcalled
a=0,b=0
a=4,b=8
说明:
该程序中定义一个类A,该类中有两个构造函数一个
是默认构造函数,另一个是带两个参数的构造函数。类
还有一个print()函数,用来输出显示该类的两个私有
数据成员的值。类中的所有成员函数都定义在类体外,
该类有明显的说明部分和实现部分。
2、
#include
classB
{
public:
B(){}
B(inti,intj);
voidprintb();
private:
inta,b;
};
classA
{
public:
A(){}
A(inti,intj);
voidprinta();
private:
Bc;
};
A::A(inti,intj):c(i,j)
{}
voidA::printa()
{
c.printb();
}
B::B(inti,intj)
{
a=i;
b=j;
}
voidB::printb()
{
cout<<”a=”<
}
voidmain()
{
Am(7,9);
m.printa();
}
运行该程序输出结果如下。
a=7,b=9
说明:
该程序中有两个类:A和B。在类A中有一个类
的对象作为私有成员,该成员又称为子对象。
3、
#include
classCount
{
public:
Count(){count++;}
staticintHM(){returncount;}
~Count(){count--;}
private:
staticintcount;
};
intCount::count=100;
voidmain()
{
Countc1,c2,c3,c4;
Cout<
}
运行该程序输出如下结果:
104
说明:
该程序中只定义了一个类Connt,该类中有一个静态
员函数HM()和静态数据成员count。对静态数据成员
类体外以下述形式进行了初始化。
intCount::count=100;
该类中还有一个默认构造函数和析构函数,这两个
数中对数据成员count进行了操作。在主函数中,先创建
该类的4个对象c1,c2,c3和c4.这时系统将要自动调用
4次默认构造函数进行初始化,于是,count将值增加为104。再使用类名限定的形式调用静态成员函数HM(),输出显示count的值为104.程序结束前,调用4次析构函数将count的值又恢复到100.
4、
#include
classA
{
public:
A(doublet,doubler){Total=t;Rate=r;}
FrienddoubleCount(A&a)
{
Total+=a.Ratea.Totalp;
returna.Total;
}
private:
doubleTotal,Rate;
};
voidmain
{
Aa1(1000.0,0.035),a2(768.0,0.028);
cout<
}
运行该程序输出如下结果:
1035,789.504
5、
#include
ClassSet
{
Public:
Set(){PC=0;}
Set(Set&p);
voidEmpty(){PC=0;}
voidIsEmpty(){returnPC==0;}
intIsMemberOf(intn);
intAdd(intn);
voidPrint();
frientvoidreverse(Setm);
private:
intelems[100];
intPC;
};
intSet::IsMemberOf(intn)
{
for(inti=0;i
if(elems[i]==n)
return1;
return0;
}
intSet::Add(intn)
{
If(IsMemberOf(n))
return1;
elseif(PC>=100)
return0;
else
{
Elems[PC++]=n;
Return1;
}
}
Set::Set(Set&p)
{
PC=p.PC;
for(inti=0;i
elems[i]=p.elems[i];
}
voidSet::Printf()
{
cout<<’{’;
for(inti=0;i
cout<
if(PC>0)
cout<
cout<<’}’<
}
voidrenerse(Setm)
{
intn=m->PC/2;
for(inti=0;i
{
inttemp;
temp=m->elems[i];
m->elems[i]=m->elems[m->PC-i-1];
m->elems[m->PC-i-1]=temp;
}
}
voidmain()
{
SetA;
cout<
print();
SetB;
for(inti=1;i<=8;i++)
Add(i);
B.Print();
cout<
B.Empty();
For(intj=11;j<20;j++)
B.Add(j);
SetC(B);
C.Print();
Reverse(&C);
C.Print;
}
运行该程序输出如下结果:
1
{}
{0,1,2,3,4,5,6,7,8,}
1
{11,12,13,14,15,16,17,18,19}
{19,18,17,16,15,14,13,12,11}
四、按下列要求编写程序:
(1)、构造函数重载;
(2)、成员函数设置默认参数;
(3)、有一个友元函数;
(4)、有一个静态函数;
(5)、使用不同的构造函数创建不同的对象。
程序内容如下所示:
#include
classTest
{
public:
Test(){}
Test(inti,intj=20)
{
t1=i;
t2=j;
t+=j-1;
}
staticintfun(Test&T);
friendintadd(Test&T);
private:
intt1,t2;
staticintt;
};
intTest::fun(Test&T)
{
t+=T.t;
returnt;
}
intadd(Test&T)
{
intn=T.t1+T.t2;
returnn;
}
intTest::t=5;
voidmain()
{
Testa1,a2(10),a3(15,25);
cout<
cout<
}
献花(
0
)
+1
(本文系
倚栏听舞
首藏
)
类似文章
更多
模拟试卷
静态构造函数
static和const修饰的类成员
《C 面向对象程序设计》✍千处细节、万字总结(建议收藏)
虚函数
C++核心编程
关于类的基础介绍
《面向对象程序设计》试题
C++类的静态成员笔记
发表评论: