void TestMainEntry()
{
boost::asio::io_service ioService;
boost::asio::ip::tcp::socket tcpSocket(ioService);
boost::asio::ip::tcp::socket tcpSocket1(ioService);
// tcpSocket = tcpSocket1;
}
void TestIfFstreamCanCopy()
{
std::fstream fs0;
std::fstream fs1;
// cause compile error
//fs0 = fs1;
}
犹豫的时候去看了下asio,发现asio的是不能copy的,然后去看了下类似fstream,发现也是不能拷贝的。
分析了下原因,像socket、文件句柄、或者是stream类似的东西,本来就不应该出现多个拷贝,如果有多个拷贝就有多个读写入口,这样会放纵程序员扩散这些入口。
在配上多线程和多模块多入口写入,就会把系统复杂化。