C++繼承和組合的初始化順序
阿新 • • 發佈:2021-11-30
測試程式碼 // ConsoleApplication10.cpp : 此檔案包含 "main" 函式。程式執行將在此處開始並結束。 #include <iostream> struct ZZ { // ZZ() { std::cout << "Con-ZZ" << std::endl; } // ~ZZ() { std::cout << "De-ZZ" << std::endl; } }; struct YY { // YY() { std::cout << "Con-YY" << std::endl; } // ~YY() { std::cout << "De-YY" << std::endl; } }; struct VZZ { // VZZ() { std::cout << "Con-VZZ" << std::endl; } // ~VZZ() { std::cout << "De-VZZ" << std::endl; } }; struct XX :public ZZ,virtual VZZ{ // XX() { std::cout << "Con-XX" << std::endl; } // ~XX() { std::cout << "De-XX" << std::endl; } private: YY y; VZZ z; }; int main() { // XX a; std::cout << "Hello World!\n"; } // //輸出 VS2017 //Con - VZZ //Con - ZZ //Con - YY //Con - VZZ //Con - XX //Hello World! //De - XX //De - VZZ //De - YY //De - ZZ //De - VZZ //初始化順序 //1.基類 //2.成員