⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 14-13.txt

📁 《C/C++完美演绎》源代码
💻 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 + -