a_7_3.cpp

来自「C++应用教程原码,里面包含该书中有十三章内容的代码,详细具体」· C++ 代码 · 共 78 行

CPP
78
字号
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
class A {
   public: 
      A()
	     { a=0; cout<<"调用缺省构造函数 A"<<endl; }
      A(int i)
	     { a=i; cout<<"调用构造函数 A"<<endl; }
      ~A()
	     { cout << "调用析构函数 A"<<endl; }
	    void Print()
	     { cout << a << ',';}
   private:
      int a;
};

class B1 :virtual public A {
   public: 
      B1()
	     { b1=0; cout<<"调用缺省构造函数 B1"<<endl; }
      B1(int i,int j)
		  :A(i),b1(j)
	     { cout <<"调用构造函数 B1"<<endl; }
      ~B1()
	     { cout << "调用析构函数 B1"<<endl; }
  void Print()
	     {   cout << b1 << ',';  }
	private:
      int b1;
};
class B2 :virtual public A {
   public: 
      B2()
	     { b2=0; cout<<"调用缺省构造函数 B2"<<endl; }
      B2(int i,int j)
		  :A(i),b2(j)
	     { cout <<"调用构造函数 B2"<<endl; }
      ~B2()
	     { cout << "调用析构函数 B3"<<endl; }
	    void Print()
  {   cout << b2 << ',';  }
private:
      int b2;
};

class C :public B1,public B2 {
   public: 
      C()
	     { c=0; cout<<"调用缺省构造函数 C"<<endl; }
      C(int i,int j)
		  :A(i),c(j)
	     { cout <<"调用构造函数 C"<<endl; }
       C(int i,int j,int k)
		  :B1(i,j),B2(j,k),c(k)
	      { cout <<"调用构造函数 C"<<endl; }
        ~C()
	      { cout << "调用析构函数 C"<<endl; }
	      void Print()
	      {   A::Print();B1::Print();B2::Print();
		      cout << c << ','<<endl<<endl; 
}
	 private:
      int c;
};

void main()
{  C c;      
   c.Print();
   C c1(34,34); 
   c1.Print();
   C c2(12,23,34); 
   c2.Print();
   cin.get(); //等待结束,以便调测程序,可以删除

} 

⌨️ 快捷键说明

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