std::basic_iosมีตัวสร้างสาธารณะ :
explicit basic_ios (std::basic_streambuf<CharT,Traits>* sb);
IMO เหตุผลเดียวที่คลาสมีตัวสร้างสาธารณะคือการใช้อินสแตนซ์แบบสแตนด์อโลนของคลาสนั้นในโปรแกรม ถ้าชั้นที่มีอยู่เท่านั้นที่จะมีชั้นเรียนอื่น ๆ สืบเชื้อสายมาจากมัน (ขณะที่ดูเหมือนว่าจะเป็นกรณีสำหรับbasic_ios) protectedทั้งหมดก่อสร้างระดับที่ควรจะเป็น สิ่งก่อสร้างของstd::ios_baseทั้งหมดได้รับการคุ้มครอง แต่ด้วยเหตุผลบางอย่างผู้ออกแบบมาตรฐานทำให้ผู้สร้างbasic_iosสาธารณะคนนี้
basic_iosจะถูกใช้เป็นชั้นฐานประเภทกระแสหลาย ๆ และฉันไม่สามารถมองเห็นกรณีการใช้งานที่คุณต้องการมีหนึ่งที่ไม่ได้เป็นอย่างน้อยหรือbasic_istream basic_ostreamมีไหม
basic_iosctor การได้รับของประชาชนตั้งแต่ก่อนที่คุณจะทำbasic_streambuf*using B::B;ผมคาดหวังว่าการใช้งานเก่าเพิ่งมี ctor พร็อกซี:A(int x) : B(x) {}- ซึ่งทำงานได้ดีแม้ว่าB's ctorprotectedคือ