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

📄 17-10.txt

📁 C++完美演绎 经典算法 如 /* 头文件:my_Include.h */ #include <stdio.h> /* 展开C语言的内建函数指令 */ #define PI 3.141
💻 TXT
字号:
/* 范例:17-10 */
#include <iostream.h>
class A
{
  public:
    A(int i,int j,int k):a(i),b(j),c(k){cout << "Constructor A\n";}
    ~A(){cout << "Destructor A\n";}
    int a;
    void show_mbr_a();
    void show_addr();
  protected:
    int b;
  private:
    int c;
};
void A::show_mbr_a()
{
  cout << "A::(value) => ";
  cout << "a=" << a << " b=" << b << " c=" << c << "\n";
}
void A::show_addr()
{
  cout << "A::(address) => ";
  cout << "&a=" << &a << " &b=" << &b << " &c=" << &c << "\n";
}
class B
{
  public:
    int a;
    B(int i,int j,int k):a(i),b(j),e(k){cout << "Constructor B\n";}
    ~B(){cout << "Destructor B\n";}
    void show_mbr_b();
    void show_addr();
  protected:
    int b;
  private:
    int e;
};
void B::show_mbr_b()
{
  cout << "B::(value) => ";
  cout << "a=" << a << " b=" << b << " e=" << e << "\n";
}
void B::show_addr()
{
  cout << "B::(address) => ";
  cout << "&a=" << &a << " &b=" << &b << " &e=" << &e << "\n";
}

class C:protected B, public A
{
  public:
    void show_mbr_c();
    void show_addr();
    void show_All();
    C(int i,int j,int k,int l,int m,int n,int o,int p) \
      :A(i,j,k),B(l,m,n),a(o),e(p)        /* 构造函数初值行 */
      {cout << "Constructor C\n";}
    ~C(){cout << "Destructor C\n";}
    int a;
  private:
    int e;
};
void C::show_mbr_c()
{
  cout << "C::(value) => ";
  cout << "a=" << a << " e=" << e << "\n";
}
void C::show_addr()
{
  cout << "C::(address) => ";
  cout << "&a=" << &a << " &e=" << &e << "\n";
}
void C::show_All()  	// C的show_addr()与父类的override
{
  cout << "All Address : \n";
  show_mbr_b();  	// 继承后对class C而言,存取等级protected
  show_mbr_a();  	// 继承后对class C而言,存取等级public
  show_mbr_c();
  B::show_addr(); 		// C中调用父类protected函数
  A::show_addr(); 	// C中调用父类public函数
  show_addr();
}

void test()
{
  C obj(1,2,3,4,5,6,7,8); 	// A::1,2,3  B::4,5,6  C::7,8
  cout << "*****C show_mbr_c*****\n";
  obj.show_mbr_c();
  cout << "*****C show_addr*****\n";
  obj.show_addr();
  cout << "*****C show_All*****\n";
  obj.show_All();
  //****** error *********
  //  cout << obj.b << "\n";	// ?::b ambiguous	/* #2 */
  //  obj.B::show_mbr_b();	// protected 无法给外界存取 /* #3 */
}

void main()
{
  test();
  getchar();
}

程序执行结果:
Constructor B
Constructor A
Constructor C
*****C show_mbr_c*****
C::(value) => a=7 e=8
*****C show_addr*****
C::(address) => &a=0065FDF4 &e=0065FDF8
*****C show_All*****
All Address :
B::(value) => a=4 b=5 e=6
A::(value) => a=1 b=2 c=3
C::(value) => a=7 e=8
B::(address) => &a=0065FDDC &b=0065FDE0 &e=0065FDE4
A::(address) => &a=0065FDE8 &b=0065FDEC &c=0065FDF0
C::(address) => &a=0065FDF4 &e=0065FDF8
Destructor C
Destructor A
Destructor B

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -