以下代码是否合法C ++?又为什么呢?它可能有什么风险?
std::vector<const char *> v1 = {"a", "b", "c"};
我正在考虑这是如何工作的,关于字符串文字的生存期。据我了解:
std::initializer_list<const char*>
vector( std::initializer_list<const char *> init)
v1
。好吧,我担心的是,这些字符串文字的生存期是否应该在第3步之后就过期了?为什么?
临时矢量是否存在无关紧要。我的观点是,构造函数的实现方式如下:
template <typename T>
vector<T>::vector(initializer_list<T> init)
{
// shallow copy from init to this
}
init
的生存期在构造函数返回后结束时,这些字符串文字是否会过期?
答案 0 :(得分:1)