SyC*_*DeR 0 c++ lambda this initializer
谁能解释一下“ self_( this, []( ... ) {} )”是如何工作的?
struct Parent {
std::shared_ptr<Parent> self_;
Parent() : self_( this, []( ... ) {} ) {}
operator std::shared_ptr<Parent>() const { return self_; }
}
Run Code Online (Sandbox Code Playgroud)
谁能解释一下“
self_( this, []( ... ) {} )”是如何工作的?
self_,成员Parent,是std::shared_ptr<Parent>。
和
self_( this, []( ... ) {} )
Run Code Online (Sandbox Code Playgroud)
使用带有两个参数的构造函数进行初始化:
(1)共享指针,this指向包含同一对象的指针self_(故名)
self_(2)删除对象时调用的函数
观察函数:[]( ... ) {}
它是一个 lambda 函数,可以接受所有内容(...旧的 C 可变参数方式)并且不执行任何操作(主体为空)。
这样做(无所事事的删除器)是因为当最后一个具有特定值的共享指针被销毁时,不需要对指针执行任何操作this。