由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 请教C++11的rvalue ref
相关主题
再一个问题c++C++糟粕和需要避免的。
warning: returning address of local variable or temporaryconst int foo()啥意思?
请教C++ call-by-ref & call-by-val的问题which func will be called?
前几天有人问rvalue reference的C++ interview questions help
今天给c++震惊了有没有办法让一个类的变量只读,不是const?
C++11的这个method有啥用?问个C++ 编译器临时变量的问题 (转载)
请教一个关于std::function的问题请教struct inside class的问题(C++)
C++ operator = overloading用copy & swap有啥优点不用头文件,如何调用函数?C++
相关话题的讨论汇总
话题: foo话题: myclass话题: void话题: const话题: object
进入Programming版参与讨论
1 (共1页)
A*******e
发帖数: 2419
1
以下两个函数到底有啥区别?
void Foo(X&& x);
void Foo(const X& x);
N******K
发帖数: 10202
2
void Foo(X&& x) 说明这个x是个临时变量 你可以在这个函数里面把它给吃掉
void Foo(const X& x); 这个x不能修改 你不能在这个函数里面吃掉它

【在 A*******e 的大作中提到】
: 以下两个函数到底有啥区别?
: void Foo(X&& x);
: void Foo(const X& x);

m*********a
发帖数: 3299
3
void Foo(X&& x);
x可以是temporary object, unnamed variable就是不用命名的variable就可以调用这个
void Foo(X& x);
x是named object,x就是bound到调用函数的 object,没有copy,改x就是改调用函数的
object
void Foo(const X& x);
x是named object,x就是bound到调用函数的 object,没有copy,但是限制了改x的权利,
无法改

【在 A*******e 的大作中提到】
: 以下两个函数到底有啥区别?
: void Foo(X&& x);
: void Foo(const X& x);

m*********a
发帖数: 3299
4
如果有MyClass
foo(MyClass())就会调用foo(MyClass&&)
MyClass()产生一个新的unamed object
如果先定义一个
MyClass myClass;
foo(myClass)就是调用foo(MyClass&)或者foo(const MyClass &)
foo(MyClass&)和foo(const MyClass &)虽然signature 不同
但是不能overload.
虽然const这儿是low level modifier, 但是const low level可以接受nonconst 和
const的variable
A*******e
发帖数: 2419
5
什么叫吃掉?
Foo1(X&& x);
Foo2(const &X);
Foo1(X());
Foo2(X());
我是问上面这两个有什么区别。

【在 N******K 的大作中提到】
: void Foo(X&& x) 说明这个x是个临时变量 你可以在这个函数里面把它给吃掉
: void Foo(const X& x); 这个x不能修改 你不能在这个函数里面吃掉它

A*******e
发帖数: 2419
6

这个
Foo(X& x)和Foo(const X& x)也可以传入临时变量调用啊。

【在 m*********a 的大作中提到】
: void Foo(X&& x);
: x可以是temporary object, unnamed variable就是不用命名的variable就可以调用这个
: void Foo(X& x);
: x是named object,x就是bound到调用函数的 object,没有copy,改x就是改调用函数的
: object
: void Foo(const X& x);
: x是named object,x就是bound到调用函数的 object,没有copy,但是限制了改x的权利,
: 无法改

N******K
发帖数: 10202
7
我说的临时变量 是一个函数返回一个object 这个东西是临时变量 也叫做 rvalue
fun_return_object() 返回一个 object
Foo(X& x) 不能这么用;Foo(fun_return_object())
Foo(X&& x) 可以这么用;Foo(fun_return_object())

【在 A*******e 的大作中提到】
:
: 这个
: Foo(X& x)和Foo(const X& x)也可以传入临时变量调用啊。

A*******e
发帖数: 2419
8

const &肯定可以这么用。

【在 N******K 的大作中提到】
: 我说的临时变量 是一个函数返回一个object 这个东西是临时变量 也叫做 rvalue
: fun_return_object() 返回一个 object
: Foo(X& x) 不能这么用;Foo(fun_return_object())
: Foo(X&& x) 可以这么用;Foo(fun_return_object())

A*******e
发帖数: 2419
9
这里说的很清楚。
http://jxq.me/2012/06/06/%E8%AF%91%E8%AF%A6%E8%A7%A3c%E5%8F%B3%
如果你实现了void foo(X&);,但是没有实现void foo(X&&);,那么和以前一样foo的参
数只能是左值。如果实现了void foo(X const &);,但是没有实现void foo(X&&);,仍
和以前一样,foo的参数既可以是左值也可以是右值。唯一能够区分左值和右值的办法
就是实现void foo(X&&);。最后,如果只实现了实现void foo(X&&);,但却没有实现
void foo(X&);和void foo(X const &);,那么foo的参数将只能是右值。
如果同时定义,是不是就有二义性了?

【在 A*******e 的大作中提到】
:
: const &肯定可以这么用。

N******K
发帖数: 10202
10
文科生学程序 从书本到书本 到都来一头浆糊
我学程序 从例子到项目 根据debug模式 跟踪程序流程 就理解了这些基本问题

【在 A*******e 的大作中提到】
: 这里说的很清楚。
: http://jxq.me/2012/06/06/%E8%AF%91%E8%AF%A6%E8%A7%A3c%E5%8F%B3%
: 如果你实现了void foo(X&);,但是没有实现void foo(X&&);,那么和以前一样foo的参
: 数只能是左值。如果实现了void foo(X const &);,但是没有实现void foo(X&&);,仍
: 和以前一样,foo的参数既可以是左值也可以是右值。唯一能够区分左值和右值的办法
: 就是实现void foo(X&&);。最后,如果只实现了实现void foo(X&&);,但却没有实现
: void foo(X&);和void foo(X const &);,那么foo的参数将只能是右值。
: 如果同时定义,是不是就有二义性了?

A*******e
发帖数: 2419
11
理解再深刻,表达不清也不行啊。:)

【在 N******K 的大作中提到】
: 文科生学程序 从书本到书本 到都来一头浆糊
: 我学程序 从例子到项目 根据debug模式 跟踪程序流程 就理解了这些基本问题

N******K
发帖数: 10202
12
程序是动态的 不可能从静态文字的书本或者帖子 你把c++全给理解了

【在 A*******e 的大作中提到】
: 理解再深刻,表达不清也不行啊。:)
k**********g
发帖数: 989
1 (共1页)
进入Programming版参与讨论
相关主题
不用头文件,如何调用函数?C++今天给c++震惊了
大侠们救命, C++ operator new 问题C++11的这个method有啥用?
请教各路C++大神 为什么f(3) 输出是 'dd'请教一个关于std::function的问题
【讨论】问一道很简单的C++题。。。。 (转载)C++ operator = overloading用copy & swap有啥优点
再一个问题c++C++糟粕和需要避免的。
warning: returning address of local variable or temporaryconst int foo()啥意思?
请教C++ call-by-ref & call-by-val的问题which func will be called?
前几天有人问rvalue reference的C++ interview questions help
相关话题的讨论汇总
话题: foo话题: myclass话题: void话题: const话题: object