标签: implicit-lifetime

聚合是隐式生命周期?似乎不对

根据thisthis ,聚合是隐式生命周期。

如果类 S 是一个聚合或者至少具有一个普通的合格构造函数和一个普通的、未删除的析构函数,则它是隐式生命周期类。

并且可以使用 malloc 创建隐式生命周期对象。请参阅示例。

#include <cstdlib>
struct X { int a, b; };

X* MakeX()
{
    // One of possible defined behaviors:
    // the call to std::malloc implicitly creates an object of type X
    // and its subobjects a and b, and returns a pointer to that X object
    X* p = static_cast<X*>(std::malloc(sizeof(X)));
    p->a = 1;
    p->b = 2;
   return p;
}
Run Code Online (Sandbox Code Playgroud)

struct A {std::string s;};也是一个总和。但这会产生一个异常,正如我所期望的,因为对 s 的赋值将首先破坏 …

c++ lifetime c++20 implicit-lifetime

8
推荐指数
1
解决办法
175
查看次数

标签 统计

c++ ×1

c++20 ×1

implicit-lifetime ×1

lifetime ×1