在他的网站2008年的一篇文章中,Herb Sutter声明如下:
由于与并发相关的原因,有一个积极的建议是在C++ 0x中进一步加强这一点并且需要空终止并且可能禁止写时复制实现.以下是该文件:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2534.html.我认为本文中的一个或两个提案很可能会被采纳,但我们将在下一个或两个会议上看到.
我知道C++ 11现在保证std :: string内容连续存储,但他们是否在最终草案中采用了上述内容?
现在使用类似的东西会安全&str[0]吗?
执行以下操作是安全的还是未定义的行为:
class Base
{
private:
int a;
};
class Derived : public Base
{
private:
int b;
};
Base x;
Derived y;
x = y; // safe?
Run Code Online (Sandbox Code Playgroud)
派生类中的额外位是否会被切掉?
为只能通过值传递的句柄编写包装类相对容易.我试图确定封装需要通过地址传递的句柄的最佳方法是什么.
例如,编写一个类似SC_HANDLE的包装器,它通过值传递给QueryServiceConfig()并不困难.一个可以实现像一个成员函数.GetHandle()或实现运算符() .
问题(至少对我来说)是像RegOpenKeyEx()这样的API函数,它需要HKEY的地址.
我读过重载运算符&通常是一个坏主意.在允许API函数访问的同时,保持封装(或尽可能多的封装)以及特别是资源集合的推荐方法是什么?