- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我喜欢 C++11 中的新指针类型,但有时我仍然需要原始指针。然而,让我对 C++ 中的“原始”类型越来越难过的是,它们习惯于在未给出显式值时初始化为未定义。随着我更频繁地使用 std::shared_ptr<> 等,将原始指针初始化为 null 的需要感觉越来越脆弱和不必要。我在说:
class foo
{
...
std::shared_ptr< bar > pb; // Initially null in whatever constructor.
std::unique_ptr< dar > pd; // Likewise.
std::weak_ptr< gar > pg; // And again.
lar* pr; // Uh-oh! Who knows what this is? Better remember to initialize...
};
foo::foo( int j )
: pr( nullptr )
{...}
foo::foo( const string& s )
: pr( nullptr )
{...}
... etc.: many tedious and error-prone constructor definitions follow.
因此,我想要的是“具有空初始化的原始指针”。像这样的东西:
class foo
{
...
std::shared_ptr< bar > pb; // Initially null in whatever constructor.
std::unique_ptr< dar > pd; // Likewise.
std::weak_ptr< gar > pg; // And again.
raw_ptr< lar > pr; // Once more with feeling.
};
foo::foo( int j )
{...} // No explicit pointer initialization necessary.
foo::foo( const string& s )
{...}
...
更准确地说,我想要的是一种简单、廉价的类型,除了其默认构造函数将其初始化为 nullptr 之外,它在各个方面都像原始指针一样。
我的问题:(1)标准库中是否已经存在这样的东西? (2) 如果不是,那么完成此类实现的最优雅/最小的方法是什么?
附言我对 Boost 或任何其他库不感兴趣,除非它可能是单个文件中的仅 header 库。小巧和简单是本质。
最佳答案
C++11 允许在类中初始化数据成员。
class foo
{
// ...
lar *pr = nullptr;
};
除非您在构造函数中分配另一个值,否则它将始终将 pr
初始化为 nullptr
。
关于c++ - 在 C++ 中自初始化为 nullptr 的普通原始指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17534210/
出于好奇,我尝试了一些原型(prototype)制作,但似乎只允许在第一个位置使用子例程的原型(prototype) &。 当我写作时 sub test (&$$) { do_somethin
我需要开发一个类似于 Android Play 商店应用程序或类似 this app 的应用程序.我阅读了很多教程,发现几乎每个教程都有与 this one 类似的例子。 . 我已经开始使用我的应用程
考虑一个表示“事件之间的时间”的列: (5, 40, 3, 6, 0, 9, 0, 4, 5, 18, 2, 4, 3, 2) 我想将这些分组到 30 个桶中,但桶会重置。期望的结果: (0, 1,
我是一名优秀的程序员,十分优秀!