📄 14-13.txt
字号:
/* 范例:14-13 */
#include <iostream.h>
/* 以下的makings类名称与earth类内的makings嵌套类名称相同。嵌套类的
namespace是属于外围类,可与外围类外的类同名。 */
class makings //#1 与#2,#3同名
{
public:
int water;
int mud;
};
class earth
{
private:
class makings //#2与#1,#3同名
{
public:
int water;
int mud;
};
makings myearth_makings; /* 以嵌套类为类型,定义一个外围类的数据成员 */
public:
void use_makings()
{
myearth_makings.water = 10000;
myearth_makings.mud = 9000;
cout<<"地球的水有"<<myearth_makings.water<<endl;
cout<<"地球的土有"<<myearth_makings.mud<<endl;
cout<<"地球适合人类居住#$$&%...\n";
}
};
/* 利用嵌套类在private区隐藏其数据,外围类再以嵌套类为类型来定义数据成员。再
利用外围类的成员函数来存取嵌套类的成员,这样可以有更严谨的隐藏数据功能且
嵌套类的生命范围只属于外围类,外围类之外的类是不可见的 */
class Mars
{
private:
class makings; // #3与#1,#2同名
makings *myMars_makings; /* 如嵌套类定义在外围类之外,仅能用指针或参考 */
public:
void use_makings();
};
class Mars::makings
{
public:
int water;
int mud;
};
/* 函数内有使用到以嵌套类为类型所建立的数据成员
myMars_makings,所以成员函数use_makings()的实作区放在class Mars::makings
的后面 */
void Mars::use_makings()
{
myMars_makings = new makings;
myMars_makings->water = 10;
myMars_makings->mud = 10000;
cout<<"火星的水有"<<myMars_makings->water<<endl;
cout<<"火星的土有"<<myMars_makings->mud<<endl;
cout<<"火星不适合人类居住#$$&%...\n";
delete myMars_makings;
}
void main()
{
earth obj1; Mars obj2;
obj1.use_makings();
obj2.use_makings();
getchar();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -