目前,G++ 和 VC++ 2010 都不支持继承构造函数。
然而,我认为这是 C++0x 中最美丽的功能之一。我认为编译器应该很容易实现它。
为什么编译器对此功能不感兴趣?
假设我想通过继承 std::string 来设计自己的字符串类,如下所示:
class MyString : public std::string
{
public:
// I have to redefine many overloaded ctors here and forward their arguments to
// std::string's ctors. How tedious it will be!!!
};
一个漂亮的代码示例:
struct B1
{
B1(char);
};
struct B2
{
B2(double);
B2(int);
};
struct D1 : B1, B2
{
using B1::B1; // D1(char)
using B2::B2; // D1(double), D1(int)
};
D1 d('c'); //OK, invokes D1(char)
C++0x 中有很多新材料,而且从事 gcc 工作的志愿者似乎发现首先要做的其他更改更有趣。
至于 VC++,不仅有工作的优先级,还有需求、文档和非常广泛的测试的额外成本(经常在 Microsoft 产品经理博客中提到),这些是销售产品的必要部分,远远超出了这些使其发挥作用。
最后,听起来 C++0x 委员会最近正在讨论削减此功能 https://stackoverflow.com/questions/4129023/how-useful-would-inheriting-constructors-be-in-c,因为大约 95% 的用例都有简单的解决方法。
综合起来,我对编译器工程师将这个保留下来以供以后使用并不感到惊讶。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)