C++类与对象例题
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
return 0;
}
n=0
4.2#include<iostream>
using namespace std;
class AA{
int n;
public:
AA(int k):n(k){}
int get( ) {return n;}
int get( ) const{ return n+1;}
};
int main( ){
Test a;
cout<<"Result2="<<a.func()<<endl;
a.sfunc(a);
}
Result1=200
Result2=201
Result1==125
5.编程题
5.1构造一个日期时间类(Timedate),数据成员包括年、月、日和时、分、秒,函数成员包括设置日期时间和输出时间,其中年、月用枚举类型,并完成测试(包括用成员函数和用普通函数)。
case Y2001:cout<<"2001";break;
case Y2002:cout<<"2002";break;
case Y2003:cout<<"2003";break;
case Y2004:cout<<"2004";break;
case Y2005:cout<<"2005";break;
year=a;
month=b;
date=c;
hh=12;mm=30;ss=0;
}
void getdate(YR &,MT &,int &);//体会用引用的优点,一次可返回3个值
void gettime(int &,int &,int &);
void putdate(YR ,MT ,int );
void puttime(int ,int ,int );
int getValue( ) const {return a;}//②
void set(int n) const{a=n;}//③常函数不能修改成员
friend void show(AA aa) const {cout<<a;}//④友元函数不能是常函数
};
其中的四个函数定义中正确的是(B)。
A.①B.②C.③D.④
};
下列关于setValue成员函数的实现中,正确的是(B)。
A.sample::setValue(int n0){n=n0;}
B.void sample::setValue(int n0){n=n0;}
C.void setValue(int n0){n=n0;}
D.setValue(int n0){n=n0;}
B.类中的函数成员可以在类体中定义,也可以在类体之外定义
C.类中的函数成员在类体之外定义时必须要与类声明在同一文件中
D.在类体之外定义的函数成员不能操作该类的私有数据成员
3.4有如下类定义:
class sample {
int n;
public:
sample (int i=0):n(i){ }
void setValue(int n0);
public:
Test( ){ n+=2; }
~Test( ){ n-=3;}
static int getNum( ) { return n;}
private:
static int n;
};
int Test::n=1;
int main( ){
Test* p = new Test;
delete p;
cout<<”n=”<<Test::getNum( )<<endl;
void list();
};
void Timedate::getdate(YR &y,MT &m,int &d){
y=year;
m=month;
d=date;
}
void Timedate::gettime(int &a,int &b,int &c){
a=hh;
b=mm;
c=ss;
}
void Timedate::putdate(YR a,MT b,int c){
class Timedate{
private:
YR year;
MT month;
int date;
int hh;
int mm;
int ss;
public:
Timedate(){year=Y2000;month=Jan;date=1;hh=0;mm=0;ss=0;}
Timedate(YR a,MT b,int c){
3.5在下面的类定义中,错误的语句是(C)。
class sample{
public:
sample(int val);//①
~sample( ); //②
private:
int a=2.5; //③
public:
sample( ); //④
};
A.①B.②C.③D.④
3.6类的构造函数被自动调用执行的情况是在创建该类的(C)。
}
switch(month){//,,,,,,,,
case Jan:cout<<'/'<<"Jan";break;
case Feb:cout<<'/'<<"Feb";break;
case Mar:cout<<'/'<<"Mar";break;
case Apr:cout<<'/'<<"Apr";break;
}
void show(Timedate &td){//普通函数,体会两者的不同
YR year;
MT month;
int date,hh,mm,ss;
td.getdate(year,month,date);
td.gettime(hh,mm,ss);
cout<<"year/month/date :";
C.AA(int) const;D.AA(int)
3.9关于成员函数特征的下述描述中,(A)是错误的。
A.成员函数一定是内联函数
B.成员函数可以重载
C.成员函数可以设置参数的默认值
D.成员函数可以是静态的
3.10不属于成员函数的是(B)。
A.静态成员函数B.友元函数
C.构造函数D.析构函数
3.11已知类A是类B的友元,类B是类C的友元,则(C)。
3.13有如下类定义:
class Test{
public:
Test( ){a=0;c=0;}//①常成员必须在初始化列表中初始化
int f(int a) const {this->a=a;}//②常函数不能修改成员
void h(int b) {Test::b=b;};//③
static int g( ) {return a;}//④静态函数要通过对象访问成员
case May:cout<<'/'<<"May";break;
case Jun:cout<<'/'<<"Jun";break;
case Jul:cout<<'/'<<"Jul";break;
case Aug:cout<<'/'<<"Aug";break;
case Sep:cout<<'/'<<"Sep";break;
#include <iostream.h>
#include <conio.h>
#include <iomanip.h>
enum YR{Y2000,Y2001,Y2002,Y2003,Y2004,Y2005};//枚举名必须是标识符
enum MT{Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec};
3.选择题
3.1数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是(B)。
A.类B.对象C.函数体D.数据块
3.2类的实例化是指(B)。
A.定义类B.创建类的对象C.指明具体类D.调用类的成员
3.3下列说法中正确的是(B)。
A.类定义中只能说明函数成员的函数头,不能定义函数体
private:
int a;
static int b;
const int c;
};
int Test::b=0;
在标注号码的行中,能被正确编译的是(C)。
A.①B.②C.③D.④
4写出程序程序执行结果。
4.1#include<iostream>
using namespace std;
class Test {
A.成员函数时B.数据成员时
C.对象时D.友元函数时
3.7(A)是析构函数的特征。
A.一个类中只能定义一个析构函数
B.析构函数名与类名不同
C.析构函数的定义只能在类体内
D.析构函数可以有一个或多个参数
3.8在下列函数原型中,可以作为类AA构造函数的是(D)。
A.void AA(int);B.int AA( );
my1.set(::number);
cout<<my1.number;
}
5103
4.4#include<iostream>
using namespace std;
class Test{
private:
static int val;
int a;
public:
static int func( );
void sfunc(Test &r);
AA a(5);
const AA b(6);
cout<<a.get()<<”,”<<b.get();
return 0;
}
57
4.3#include<iostream>
using namespace std;
class MyClass {
public:
int number;
void set(int i);
year=a;
month=b;
date=c;
}
void Timedate::puttime(int a,int b,int c){
hh=a;
mm=b;
ss=c;
}
void Timedate::list(){//成员函数
cout<<"year/month/date :";
switch(year){
case Y2000:cout<<"2000";break;
};
int Test::val=200;
int Test::func( ){
return val++;
}
void Test::sfunc(Test &r){
r.a=125;
cout<<"Result3="<<r.a<<endl;
}
void main( ){
cout<<"Result1="<<Test::func( ቤተ መጻሕፍቲ ባይዱ<<endl;
A.类A一定是类C的友元
B.类C一定是类A的友元
C.类C的成员函数可以访问类B的对象的任何成员
D.类A的成员函数可以访问类B的对象的任何成员
3.12有如下类定义:
class AA{
int a;
public:
int getRef( ) const {return &a;} //①返回类型为int, return &a为地址
1.3构造函数的任务是建立对象。类中可以有多个构造函数,它们由参数区分。如果类说明中没有给出构造函数,则C++编译器会提供构造函数,该函数不完成(完成/不完成)对象初始化工作。
1.4复制构造函数的参数是对象的复制,当程序没有给出复制构造函数时,编译系统会提供默认复制构造函数,完成类对象的复制。复制构造函数被调用情况有3种。
};
int number=3;
void MyClass::set (int i){
number=i;
}
void main( ){
MyClass my1;
int number=10;
my1.set(5);
cout<<my1.number<<endl;
my1.set(number);
cout<<my1.number<<endl;
1.5析构函数在对象释放时被自动调用。类中没有定义析构函数时,编译系统会提供一个默认的析构函数。该函数不完成(完成/不完成)具体对象的清理工作。
2.1类与对象的概念是客观世界的反映。
2.2引用作为函数参数时能实现两个实参之间的数据交换,对应实参不能为引用,返回值为引用的函数可以作为左值。
2.3友元函数的函数体内访问对象成员时,必须用对象名加运算符”.”再加对象成员名。
case Oct:cout<<'/'<<"Oct";break;
case Nov:cout<<'/'<<"Nov";break;
case Dec:cout<<'/'<<"Dec";break;
}
cout<<'/'<<date<<endl;
cout<<"hour:minite:second :";
cout<<hh<<':'<<mm<<':'<<ss<<endl;
1.概念填空题
1.1类定义的关键字是class。类的数据成员通常指定为私有成员。类的函数成员通常指定为公有成员,指定为公有的类成员可以在类对象所在域中的任何位置访问它们,类的私有和保护只能被该类的成员函数或友元函数访问。
1.2类的访问限定符包括public、private和protected。类成员默认的访问方式是private。访问限定符在类中无先后次序,各限定符允许(允许/不允许)多次出现。
}
n=0
4.2#include<iostream>
using namespace std;
class AA{
int n;
public:
AA(int k):n(k){}
int get( ) {return n;}
int get( ) const{ return n+1;}
};
int main( ){
Test a;
cout<<"Result2="<<a.func()<<endl;
a.sfunc(a);
}
Result1=200
Result2=201
Result1==125
5.编程题
5.1构造一个日期时间类(Timedate),数据成员包括年、月、日和时、分、秒,函数成员包括设置日期时间和输出时间,其中年、月用枚举类型,并完成测试(包括用成员函数和用普通函数)。
case Y2001:cout<<"2001";break;
case Y2002:cout<<"2002";break;
case Y2003:cout<<"2003";break;
case Y2004:cout<<"2004";break;
case Y2005:cout<<"2005";break;
year=a;
month=b;
date=c;
hh=12;mm=30;ss=0;
}
void getdate(YR &,MT &,int &);//体会用引用的优点,一次可返回3个值
void gettime(int &,int &,int &);
void putdate(YR ,MT ,int );
void puttime(int ,int ,int );
int getValue( ) const {return a;}//②
void set(int n) const{a=n;}//③常函数不能修改成员
friend void show(AA aa) const {cout<<a;}//④友元函数不能是常函数
};
其中的四个函数定义中正确的是(B)。
A.①B.②C.③D.④
};
下列关于setValue成员函数的实现中,正确的是(B)。
A.sample::setValue(int n0){n=n0;}
B.void sample::setValue(int n0){n=n0;}
C.void setValue(int n0){n=n0;}
D.setValue(int n0){n=n0;}
B.类中的函数成员可以在类体中定义,也可以在类体之外定义
C.类中的函数成员在类体之外定义时必须要与类声明在同一文件中
D.在类体之外定义的函数成员不能操作该类的私有数据成员
3.4有如下类定义:
class sample {
int n;
public:
sample (int i=0):n(i){ }
void setValue(int n0);
public:
Test( ){ n+=2; }
~Test( ){ n-=3;}
static int getNum( ) { return n;}
private:
static int n;
};
int Test::n=1;
int main( ){
Test* p = new Test;
delete p;
cout<<”n=”<<Test::getNum( )<<endl;
void list();
};
void Timedate::getdate(YR &y,MT &m,int &d){
y=year;
m=month;
d=date;
}
void Timedate::gettime(int &a,int &b,int &c){
a=hh;
b=mm;
c=ss;
}
void Timedate::putdate(YR a,MT b,int c){
class Timedate{
private:
YR year;
MT month;
int date;
int hh;
int mm;
int ss;
public:
Timedate(){year=Y2000;month=Jan;date=1;hh=0;mm=0;ss=0;}
Timedate(YR a,MT b,int c){
3.5在下面的类定义中,错误的语句是(C)。
class sample{
public:
sample(int val);//①
~sample( ); //②
private:
int a=2.5; //③
public:
sample( ); //④
};
A.①B.②C.③D.④
3.6类的构造函数被自动调用执行的情况是在创建该类的(C)。
}
switch(month){//,,,,,,,,
case Jan:cout<<'/'<<"Jan";break;
case Feb:cout<<'/'<<"Feb";break;
case Mar:cout<<'/'<<"Mar";break;
case Apr:cout<<'/'<<"Apr";break;
}
void show(Timedate &td){//普通函数,体会两者的不同
YR year;
MT month;
int date,hh,mm,ss;
td.getdate(year,month,date);
td.gettime(hh,mm,ss);
cout<<"year/month/date :";
C.AA(int) const;D.AA(int)
3.9关于成员函数特征的下述描述中,(A)是错误的。
A.成员函数一定是内联函数
B.成员函数可以重载
C.成员函数可以设置参数的默认值
D.成员函数可以是静态的
3.10不属于成员函数的是(B)。
A.静态成员函数B.友元函数
C.构造函数D.析构函数
3.11已知类A是类B的友元,类B是类C的友元,则(C)。
3.13有如下类定义:
class Test{
public:
Test( ){a=0;c=0;}//①常成员必须在初始化列表中初始化
int f(int a) const {this->a=a;}//②常函数不能修改成员
void h(int b) {Test::b=b;};//③
static int g( ) {return a;}//④静态函数要通过对象访问成员
case May:cout<<'/'<<"May";break;
case Jun:cout<<'/'<<"Jun";break;
case Jul:cout<<'/'<<"Jul";break;
case Aug:cout<<'/'<<"Aug";break;
case Sep:cout<<'/'<<"Sep";break;
#include <iostream.h>
#include <conio.h>
#include <iomanip.h>
enum YR{Y2000,Y2001,Y2002,Y2003,Y2004,Y2005};//枚举名必须是标识符
enum MT{Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec};
3.选择题
3.1数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是(B)。
A.类B.对象C.函数体D.数据块
3.2类的实例化是指(B)。
A.定义类B.创建类的对象C.指明具体类D.调用类的成员
3.3下列说法中正确的是(B)。
A.类定义中只能说明函数成员的函数头,不能定义函数体
private:
int a;
static int b;
const int c;
};
int Test::b=0;
在标注号码的行中,能被正确编译的是(C)。
A.①B.②C.③D.④
4写出程序程序执行结果。
4.1#include<iostream>
using namespace std;
class Test {
A.成员函数时B.数据成员时
C.对象时D.友元函数时
3.7(A)是析构函数的特征。
A.一个类中只能定义一个析构函数
B.析构函数名与类名不同
C.析构函数的定义只能在类体内
D.析构函数可以有一个或多个参数
3.8在下列函数原型中,可以作为类AA构造函数的是(D)。
A.void AA(int);B.int AA( );
my1.set(::number);
cout<<my1.number;
}
5103
4.4#include<iostream>
using namespace std;
class Test{
private:
static int val;
int a;
public:
static int func( );
void sfunc(Test &r);
AA a(5);
const AA b(6);
cout<<a.get()<<”,”<<b.get();
return 0;
}
57
4.3#include<iostream>
using namespace std;
class MyClass {
public:
int number;
void set(int i);
year=a;
month=b;
date=c;
}
void Timedate::puttime(int a,int b,int c){
hh=a;
mm=b;
ss=c;
}
void Timedate::list(){//成员函数
cout<<"year/month/date :";
switch(year){
case Y2000:cout<<"2000";break;
};
int Test::val=200;
int Test::func( ){
return val++;
}
void Test::sfunc(Test &r){
r.a=125;
cout<<"Result3="<<r.a<<endl;
}
void main( ){
cout<<"Result1="<<Test::func( ቤተ መጻሕፍቲ ባይዱ<<endl;
A.类A一定是类C的友元
B.类C一定是类A的友元
C.类C的成员函数可以访问类B的对象的任何成员
D.类A的成员函数可以访问类B的对象的任何成员
3.12有如下类定义:
class AA{
int a;
public:
int getRef( ) const {return &a;} //①返回类型为int, return &a为地址
1.3构造函数的任务是建立对象。类中可以有多个构造函数,它们由参数区分。如果类说明中没有给出构造函数,则C++编译器会提供构造函数,该函数不完成(完成/不完成)对象初始化工作。
1.4复制构造函数的参数是对象的复制,当程序没有给出复制构造函数时,编译系统会提供默认复制构造函数,完成类对象的复制。复制构造函数被调用情况有3种。
};
int number=3;
void MyClass::set (int i){
number=i;
}
void main( ){
MyClass my1;
int number=10;
my1.set(5);
cout<<my1.number<<endl;
my1.set(number);
cout<<my1.number<<endl;
1.5析构函数在对象释放时被自动调用。类中没有定义析构函数时,编译系统会提供一个默认的析构函数。该函数不完成(完成/不完成)具体对象的清理工作。
2.1类与对象的概念是客观世界的反映。
2.2引用作为函数参数时能实现两个实参之间的数据交换,对应实参不能为引用,返回值为引用的函数可以作为左值。
2.3友元函数的函数体内访问对象成员时,必须用对象名加运算符”.”再加对象成员名。
case Oct:cout<<'/'<<"Oct";break;
case Nov:cout<<'/'<<"Nov";break;
case Dec:cout<<'/'<<"Dec";break;
}
cout<<'/'<<date<<endl;
cout<<"hour:minite:second :";
cout<<hh<<':'<<mm<<':'<<ss<<endl;
1.概念填空题
1.1类定义的关键字是class。类的数据成员通常指定为私有成员。类的函数成员通常指定为公有成员,指定为公有的类成员可以在类对象所在域中的任何位置访问它们,类的私有和保护只能被该类的成员函数或友元函数访问。
1.2类的访问限定符包括public、private和protected。类成员默认的访问方式是private。访问限定符在类中无先后次序,各限定符允许(允许/不允许)多次出现。