有一个类具有恒定的秘密字段。这个秘密是由远程功能设置的。以后如何设置这个常数值?或者也许有某种方法可以稍后调用构造函数?
class C {
public :
C(std::string const & );
~C(void);
private :
std::string const pass ;
} ;
void SetPassword(C&);
int main(){
C c;
// error: no matching function for call to ‘C::C()’
SetPassword(c);
}
在 C++17 中,可以类似地使用
std::optional<>您可以在空闲内存中(在堆上)创建一个对象。但同时,你也不能忘记释放这段内存。如果您需要将对象存储在堆栈中,那么 C++联合结构将有所帮助。此结构中的元素也被手动初始化和删除。为了避免健忘的问题,一个额外的LazyC类会有所帮助,它会自己做这件事。
这个附加类本身将像这样初始化该类:
并删除它:
完整代码:
结果 :