由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - a very general c++ question
相关主题
const_reverse_iterator和reverse_iterator有什么区别?职场感触:有时候还是笨点好。
copy constructor 的问题跳还不跳?
问个C++ 编译器临时变量的问题snapchat offer求点评
现在h1b transfer到底要不要做PWD啊?选大公司还是继续在小公司混
请教:两个Offer如何选择报Apple Offer及面经
找工作的时候如果怀孕的话要说实话么?Onsite面试9天之后拿到offer
C++ Q83: 这个const_cast什么意思?just screw up a phone interview
【请教】我该读PhD么?读博的话跟教授A还是教授B?c++中,对象的实例都被分配在HEAP里 这个概念对么?
相关话题的讨论汇总
话题: foo话题: const话题: c++话题: what话题: foo2
进入JobHunting版参与讨论
1 (共1页)
c****o
发帖数: 1280
1
Can any Daniu explain when to use "const & " in c++ generally, what are the
pros and cons? I got screwed up with it quite often, really frustrated.
What is the point for the return value of a function to be const &?
Thank You!
g**u
发帖数: 583
2
写说几句,等daniu拍砖。
const &中的 &是告诉编译器,传递的是变量地址,而不是变量的copy,换句话说如果
函数里面改变了该变量的值的话, 函数返回是改变量的值也被改变;但是如果前面加
上const的话,那么编译器在编译的时候会检查传进来的值在函数体内是否会被修改,
如果修改的话,以出现compile error。。。
至于函数返回const &,那么该函数的返回值不能做l-value....
x******7
发帖数: 49
3
传递 const & 支持参数的隐式转换。能将一个基本类型转换为一个对象。
i**********e
发帖数: 1145
4
class Foo {
// bla bla bla
};
class A{
public:
Foo foo1() {
return x;
}
const Foo &foo2() {
return x;
}
private:
Foo x;
};
通常没必要的话直接返回 Foo object 就可以了。
返回 const Foo & 主要是在以下的情况:
Foo x = A().foo2();
避免不必要的两次 copy(例如:A().foo1())。但是现在的编译器都很聪明,A().foo1
() 这种情况也只 copy 一次。
还有一种情况返回 const Foo & 的目的就是避免以下奇怪的情况:
(A().foo2() = x) = y;
如果 foo2() 的返回值定义为 Foo & 就反而会编译通过。
想想看 assignment operator 的返回值你就知道我在说什么意思了。在 primitive
type 里:
int x, y, z;
(x = y) = z;
虽然以上的含义很多人都搞不懂,但是语法是对的。
简单来说,在你自己定义的 user type,如果要避免这种情况 (x=y)=z,那就返回
const Foo &.
如果要与 primitive type 一样允许 (x=y)=z,那就返回 Foo &.
一些常见面试题的答案与总结 -
http://www.ihas1337code.com
1 (共1页)
进入JobHunting版参与讨论
相关主题
c++中,对象的实例都被分配在HEAP里 这个概念对么?请教:两个Offer如何选择
amazon intern 三面找工作的时候如果怀孕的话要说实话么?
Amazon面试问题C++ Q83: 这个const_cast什么意思?
被问到primitive type和class type的区别【请教】我该读PhD么?读博的话跟教授A还是教授B?
const_reverse_iterator和reverse_iterator有什么区别?职场感触:有时候还是笨点好。
copy constructor 的问题跳还不跳?
问个C++ 编译器临时变量的问题snapchat offer求点评
现在h1b transfer到底要不要做PWD啊?选大公司还是继续在小公司混
相关话题的讨论汇总
话题: foo话题: const话题: c++话题: what话题: foo2