我有一類服務器,該服務器有一個構造函數:爲什麼當我沒有傳遞類的實例時調用了複製構造函數?
Server::Server(int port) {
// initialize some class variables
port_ = port;
//...
}
我試着像這樣創建類的實例:
int main(int argc, char** argv) {
int port = 3000;
Server server = Server(port);
}
而且我得到這個編譯錯誤:
server_main.cpp:32:32: error: use of deleted function ‘Server::Server(const Server&)’
Server server = Server(port);
^
現在,我明白爲什麼複製構造函數被隱式刪除,但爲什麼被調用?
如果向該類添加複製構造函數,錯誤消失。有沒有其他方法可以避免這種情況?
我敢肯定,這是因爲它初始化右側的變量,然後複製到變量 – Matriac
請注意,它不太可能被調用(你可以通過寫一個拷貝構造函數來打印某些東西來測試你的假設。可能構成[mcve]的一部分。) – juanchopanza