可以在构造函数中分配std :: string吗?

bba*_*zso 4 c++

我有以下构造函数:

 TCPConnector(int32_t fd, string ip, uint16_t port,
            vector<uint32_t>& protocolChain, const Variant& customParameters)
    : IOHandler(fd, IOHT_TCP_CONNECTOR) {
        _ip = ip;
        _port = port;
        _protocolChain = protocolChain;
        _closeSocket = true;
        _customParameters = customParameters;
    }
Run Code Online (Sandbox Code Playgroud)

我想知道是否可以在构造函数中安全地分配字符串(即_ip)而不显式初始化它?

GMa*_*ckG 7

std::string几个构造函数.在您的情况下,它是默认构造(到""),然后分配一个新值.

考虑将它(和您的其他变量)放入初始化列表中:

: _ip(ip) ...
Run Code Online (Sandbox Code Playgroud)

  • 这里是C++ FAQ Lite的链接,关于赋值与初始化,以补充这个答案:http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.6 (2认同)