为什么std :: basic_ios`具有公共构造函数?

问题描述 投票:14回答:1

std::basic_ios has a public constructor

std::basic_ios

IMO,类具有公共构造函数的唯一原因是在程序中使用该类的独立实例。如果仅存在一个类以使其他类从其派生(如explicit basic_ios (std::basic_streambuf<CharT,Traits>* sb); 的情况),则该类的所有构造函数都应为basic_iosprotected的构造函数均受保护。但是,由于某种原因,该标准的设计者将此std::ios_base的构造函数公开了。

basic_ios用作几种流类型的基类,并且我无法设想用例中至少有一个basic_iosbasic_istream。有没有?

c++ stream language-lawyer design-rationale
1个回答
0
投票

类具有公共构造函数的另一个原因是在派生类中具有此构造函数签名:

© www.soinside.com 2019 - 2024. All rights reserved.