搜狗笔试题目求解
8. 关于C++标准模版库,下面说法错误的有哪些?()
A. std::auto_ptr<ClassA> 类型的对象,可以放到std::vector<std::auto_ptr<ClassA>>容器中.
B. std::shared_ptr<ClassA>类型的对象可以放到std::vector<std::shared_ptr<ClassA>>容器中
C. 对于复杂类型T的对象tObj,++tObj和tObj++相比,前者更高.
D. 对于new操作符创建对象时,如果没有足够内存空间而创建失败,则new操作符将返回NULL.
我知道的A是错的, 求问C正确吗?
正确答案是什么?
[解决办法]
A错:因为auto_ptr实现上来说, 在赋值或者拷贝构造函数的实现上来看是会将指针拥有权转移, 而不是做引用计数, 在这一点上需要用shared_ptr取代之.
B对:没想到不可以的原因.
C对:直接return *this, 无拷贝.
D错:不是抛bad_alloc异常吗?记不清了。
[解决办法]
即便是基础类型++x的效率也比x++高,因为++x是对x加1然后返回x本身,而x++则要构建一个临时变量用来保存x的值,然后x本身++,最后返回的是临时变量,所以一般情况下在程序中如果只是简单要求对对象加1,推荐使用++x
[解决办法]
D选项里,malloc才会返回NULL,new是抛出bad_alloc异常