C ++临时对象成员函数的生命周期

时间:2018-01-03 02:57:33

标签: c++

假设我有一个模板

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&lt;&gt;()会创建一个临时对象,临时对象的生命周期是什么?在dbSelect主体中,临时对象的sql [512]仍然可以访问?访问仍然有效吗?

1 个答案:

答案 0 :(得分:3)

是的,它是安全的,临时o对象的生命周期会延长到完整表达式结束(在你的情况下是分号):

Sql<>()

相关:C++: Life span of temporary arguments?