How to use operator= with anonymous objects in C++?

自作多情 提交于 2019-12-05 11:49:57

The right side of the assignment operator should take a const IPAddress&.

Temporary objects can be bound to const references, but not to non-const references. This is why x = IPAddress(IPV4, "192.168.2.10"); doesn't work.

IPAddress(IPV4, "192.168.2.10") = x; works because it is legal to invoke member functions on temporary objects.

The assignment operator is defined using const:

IPAddress& IPAddress::operator=(const IPAddress &other)

Your temporary cannot bind to a non-const reference, as it is theoretically destructed before the call to the assignment operator (this might not happen due to optimization, don't rely on it).

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!