繁体   English   中英

C ++临时对象成员函数的生存时间

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM