这个问题也有另外一个答案。
其实我一直主张值语义。因为原始类型除了 flaot/double 没有 null 这语义,没道理给复杂对象类型都弄个这个语义。
有没有 null,应该由对象自己决定。比如 string 类型,内部指针是空指针的时候就是 null,和 0 长度的字符串区别开。
或者像 socket 类型,没连接 fd 无效的时候就是空 socket.
如果是这样的话,那构造函数抛异常也不需要了。
【 在 zhongjianguo 的大作中提到: 】
: 这应该是C++的难言之隐,在当初把语言设计为 构造函数不能返回错误时,就决定了C++离不开异常。
--
FROM 120.36.160.*