Private:
CC1b1;
CC5b5;
};
Voidmain()
{Aobj(2,3,7,2);}
结果:
调用CC5的构造函数:
3
调用CC1的构造函数:
7
调用CC1的构造函数:
2
调用CC5的构造函数:
2
调用A的构造函数:
14
阅读程序,回答问题:
10.分析下列程序中的访问权限,并回答下列问题
#inLlude
classM
{public:
voidf1(){}
M(){}
proteLted:
intj1;
private:
inti1;
};
classN:
proteLtedM
{puNliL:
voidf5(){}
N(){}
proteLted:
intj5;
privMte:
inti5;
};
classL:
proteLtedN
{public:
voidf3(){}
L(){}
proteLted:
intj3;
private:
inti3;
};
(1)派生类N中成员函数f5()能否访问基类M中的成员f1(),i1,j1;
答案:
1(),i1可以访问j1不可以private是任何继承方式都不能访问的
(2)派生类N的对象N能否访问基类M中的成员f1(),i1,j1;
答案:
f1()可以访问,i1只能在内部直接访问不能被对象访问,j1不能
(3)派生类C中成员函数f3()能否访问基类N中的成员f5(),i5,j5;能否访问基类M中的成员f1(),i1,j1;
答案:
f5(),j5可以访问f1(),i5可以访问j1不行
(4)派生类C的对象c能否访问基类N中的成员f5(),i5,j5;能否访问基类M中的成员f1(),i1,j1;
答案:
f5()可以,j5不行,f1可以,i1j1不行
XX原题:
#include<>
classA
{public:
voidf1();
protected:
intj1;
private:
inti1;
};
classB:
publicA
{public:
voidf2();
protected:
intj2;
private:
inti2;
};
classC:
publicB
{public:
voidf3();
};
回答下列问题:
1.派生类B中成员函数f2()能否访问基类A中的成员:
f1(),i1和j1
2.派生类B的对象b1能否访问基类A中的成员:
f1(),i1和j1
3.派生类C中成员函数f3()能否访问直接基类B中的成员:
f2()和j2能否访问间接基类A中的成员:
f1(),i1和j1
4.派生类C的对象c1能否访问直接基类B中的成员:
f2()和j2能否访问间接基类A中的成员:
f1(),i1和j1
(),i1可以访问j1不可以private是任何继承方式都不能访问的
()可以访问,i1只能在内部直接访问不能被对象访问,j1不能
(),j2可以访问f1(),i1可以访问j1不行
()可以j2不行f1可以,i1,j1不行
1设计一个立方体类Nox,它能计算并输出立方体的体积和表面积。
第一种代码:
#include
usingnamespacestd;
classBox
{
public:
Box(doublet)
{
a=t;
volume=;
area=;
}
doubleseta(doublei)
{
a=i;
returna;
}
doublegetvolume()
{
volume=a*a*a;
returnvolume;
}
doublegetarea()
{
area=6*a*a;
returnarea;
}
voiddisp()
{
getvolume();
getarea();
cout<<"=>体积"<}
private:
doublea,volume,area;
};
intmain()
{
Boxobj1;
cout<<"obj1";
();
Boxobj2;
cout<<"obj2";
();
system("PAUSE");
}
第二种代码:
#include
usingnamespacestd;
classBox{
private:
doublelength;
doublevolume;
doublearea;
public:
Box(doublel){
length=l;
volume=;
area=;
}
doublegetVolume(){returnlength*length*length;}
doublegetArea(){returnlength*length*6;}
voidshow(){volume=getVolume();area=getArea();cout<<"立方体的体积:
"<"<
};
intmain(){
intlength=0;
cout<<"请输入立方体的边长:
";
cin>>length;
Boxbox(length);
();
getchar();
system("PAUSE");
return0;
}
第三种代码:
#include<>
classNox
{
public:
Nox(doublet)
{
a=t;
volume=;
area=;
}
doubleseta(doublei)
{
a=i;
returna;
}
doublegetvolume()
{
volume=a*a*a;
returnvolume;
}
doublegetarea()
{
area=6*a*a;
returnarea;
}
voiddisp()
{
getvolume();
getarea();
cout<<"=>体积"<}
private:
doublea,volume,area;
};
voidmain()
{
Noxobj1;
cout<<"obj1";
();
Noxobj2;
cout<<"obj2";
();
}
2.编程实现抽象类Employee,派生类Mnger和HourlyWorker,Employee有数据成员姓名nMme和工号ID,MMnger有数据成员sMl,代表经理的月工资,HourlyWorker有wMge和hours,分别代表钟点工的每小时的工资数和月工作时数,定义的所有类中必须包含构造函数、析构函数、修改和获取所有数据成员的成员函数,以及虚函数来计算职员的工资、输出职员的姓名nMme和工号ID。
#include
#include
usingnamespacestd;
classEmployee{
public:
Employee(){};
virtualvoidgongzi(){cout<<"no";}
voidxianshi(){cout<<"no";}
stringname;stringid;
~Employee(){};
};
classManger:
publicEmployee
{
public:
Manger(strings1,strings2){name=s1;id=s2;}
voidgongzi(){
cout<"<cout<}
voidxianshi(){
cout<<"经理的姓名为:
"<cout<<"经理的ID为:
"<}
voidset(){cout<<"请修改经理的月工资为:
";cin>>sal;cout<~Manger(){};private:
intsal;
};
classHourlyWorker:
publicEmployee
{
public:
HourlyWorker(strings1,strings2){name=s1;id=s2;}
voidgongzi(){cout<"<voidxianshi(){
cout<<"钟点工的姓名为:
"<cout<<"钟点工的ID为:
"<}voidset(){
cout<<"请输入钟点工每小时的工资数:
";
cin>>wage;cout<cout<<"请输入钟点工月工作时数:
";
cin>>hours;cout<}
~HourlyWorker(){};private:
intwage;inthours;
};voidfun(Employee*p){
p->gongzi();
}voidmain(){
();();
fun(&zhangye);
();
();
fun(&zjy);
}
在用class定义一个类时,数据成员和成员函数的默认访问权限是;私有
(3)含有纯虚函数的类称作;抽象类
(4)已知intDNL(intn){returnn+n;}和longDNL(longn){returnn+n;}
是一个函数模板的两个实例,则该函数模板的定义为:
TemplateTDBL(Tn){returnn+n;}
在下面程序的横线处填上适当的语句,使该程序执行结果为121.
#include
classMyClass
{ puNlic:
MyClass(inta){x=M;}
MyClass(intx){=x;};intGetNum(){returnx;};
//取x值
private
intx;
};
intmMan()
{ MyClassmy(121);
cout<<()< return0;
}
下面程序的打印结果是
#include
intf(int);
intmain()