12th week read Program 3: constructor of the virtual base class, 12th week Constructor

Source: Internet
Author: User

12th week read Program 3: constructor of the virtual base class, 12th week Constructor

Problem and code:

# Include <iostream> using namespace std; class Base {public: Base (char I) {cout <"Base constructor. -- "<I <endl ;}; class Derived1: virtual public Base // virtual Base class {public: Derived1 (char I, char j): Base (I) {cout <"Derived1 constructor. -- "<j <endl ;}; class Derived2: virtual public Base // virtual Base class {public: Derived2 (char I, char j): Base (I) {cout <"Derived2 constructor. -- "<j <endl ;}; class MyDerived: public Derived1, public Derived2 {public: MyDerived (char I, char j, char k, char l, char m, char n, char x): Derived2 (I, j), Derived1 (k, l), Base (m), d (n) {cout <"MyDerived constructor. -- "<x <endl;} private: Base d ;}; int main () {MyDerived obj ('A', 'B', 'C ', 'D', 'E', 'F', 'G');/* execute the MyDerived constructor Derived2 ('A', 'B '), derived1 ('C', 'D'), Base ('E'), D ('F') Because Derived2 ('A', 'B ') and Derived1 ('C', 'D') are virtual Base classes, so the Base constructor is output first by executing the Base constructor. -- E then runs the statements in the constructor of the virtual base class, executes the constructor of Derived1, and outputs the constructor of derived1. -- D then executes the Derived2 constructor and outputs The Derived2 constructor. -- B then, the MyDerived class contains a Base class object. Therefore, execute the Base constructor again and output the Base constructor. -- F is the final statement in the MyDerived constructor <"MyDerived constructor. -- G */return 0 ;}


Running result:

Knowledge Point summary:

Note the above.

 

Learning Experience:

1. Definition of virtual base class

Class virtual base class name: The base class inherited by virtual public.

2. when a derived class inherits the virtual base class, the constructor first executes the constructor of the original base class, and skips the construction of data members in the base class in the virtual base class, execute your own data constructor.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.