首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有没有可能创建一个模仿基本类型的构造函数语义的C++类型?

有没有可能创建一个模仿基本类型的构造函数语义的C++类型?
EN

Stack Overflow用户
提问于 2012-04-12 04:57:35
回答 8查看 186关注 0票数 1

int/double/等的构造函数语义是:

代码语言:javascript
运行
复制
int a; // uninitialized
int b = int(); // zero initialized
int c = int(4); // four

是否有可能定义一个具有完全相同行为的类?即同时具有未初始化和已初始化的默认构造函数的构造函数?我认为这是不可能的,目前通过创建一个构造函数来解决这个问题,这个构造函数只在调用0时编译,但希望确保没有一种方法可以精确地模仿基本类型。

EN

Stack Overflow用户

发布于 2012-04-12 05:32:08

也许你可以这样做:

代码语言:javascript
运行
复制
template<typename T>
struct uninitialized {
    static_assert(std::is_trivially_destructible<T>::value,"T must have trivial dtor");

    alignas(T) char raw[sizeof(T)];

    template<typename... Us>
    T &initialize(Us &&... us) {
        return *(new (raw) T(std::forward<Us>(us)...));
    }

    T &get() { return reinterpret_cast<T&>(raw); }
};

需要使用简单的析构函数,否则您必须跟踪对象是否已被构造,以便适当地销毁它。

票数 0
EN
查看全部 8 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10113872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档