尝试了解初始化 std::string 的不同方式

问题描述 投票:0回答:1
std::string str;
std::string(str);
std::string str = {};

它们是一样的吗?如果不是那有什么区别?我什么时候应该使用它们?

C++ 新手,尝试了解初始化 std::string 的不同方法。

c++
1个回答
0
投票

这两个声明

std::string str;
std::string(str);

是等价的。声明符可以用括号括起来。

至于这个声明

std::string str = {};

然后要求默认构造函数是可以接受的。如果它被声明为显式(对于类

std::string
它不是显式的),那么编译器将发出错误。

这是一个会产生编译器错误的演示程序。

int main()
{
    struct A
    {
        explicit A() = default;
    };

    A a = {};
}
© www.soinside.com 2019 - 2024. All rights reserved.