[英]C++ temporary object member function life time
假设我有一个模板
template <unsigned int SIZE=512>
structure Sql
{
const char * operator()(const char* format, ...)
{
deal format string here ...
return sql;
}
private:
char sql[SIZE];
}
我还有另一个功能:
int dbSelect (const char* sql, void *outdata)
{
use sql to query database here...
}
void main()
{
dbSelect(Sql<>()(“select data from abc where column =%u”,32u),&outdata);
}
这样使用Sql是安全的吗? Sql <>()将创建一个临时对象,该临时对象的寿命是多少? 在dbSelect主体期间,临时对象的sql [512]是否仍然可以访问? 仍然有效访问吗?
是的,这是安全的,临时Sql<>()
对象的生存期会延长到完整表达式的结尾(在您的情况下为分号):
dbSelect(Sql<>()(“select data from abc where column =%u”,32u),&outdata);
^^^^
here Sql<>() ceases to be valid
相关: C ++:临时参数的寿命?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.