A*******e 发帖数: 2419 | 1 在别人程序里看到的。
constexpr const char* x = "hello";
这里面的constexpr const是什么意思?
const X& foo() & {
...
}
第二个&是什么意思?
C++进化忒快了。 |
A*******e 发帖数: 2419 | 2 顶。
【在 A*******e 的大作中提到】 : 在别人程序里看到的。 : constexpr const char* x = "hello"; : 这里面的constexpr const是什么意思? : const X& foo() & { : ... : } : 第二个&是什么意思? : C++进化忒快了。
|
h**********c 发帖数: 4120 | 3 the second looks like defining a functor reference. |
d********t 发帖数: 9628 | 4 第一个是C++11加进来的吧
【在 A*******e 的大作中提到】 : 在别人程序里看到的。 : constexpr const char* x = "hello"; : 这里面的constexpr const是什么意思? : const X& foo() & { : ... : } : 第二个&是什么意思? : C++进化忒快了。
|
A*******e 发帖数: 2419 | 5 constexpr和const不是重复了吗?虽然语义略有区别。
【在 d********t 的大作中提到】 : 第一个是C++11加进来的吧
|
d****i 发帖数: 4809 | 6 都看不懂啊,我只用plain old C++。
【在 A*******e 的大作中提到】 : 在别人程序里看到的。 : constexpr const char* x = "hello"; : 这里面的constexpr const是什么意思? : const X& foo() & { : ... : } : 第二个&是什么意思? : C++进化忒快了。
|
l*********s 发帖数: 5409 | 7 应该说语义略有重叠。
【在 A*******e 的大作中提到】 : constexpr和const不是重复了吗?虽然语义略有区别。
|
g*********e 发帖数: 14401 | 8 还有这种
class A{
A(const A &&) {};
A() : delete
}
不知道都是什么玩意儿卧槽
还有人拼命用fbstring这些装b |
v******y 发帖数: 84 | 9 第一个装逼通得过编译么?简直就是扯淡
constexpr隐含着const的意思,是implicitly indicates a const.
constexpr is an expression that can be evaluate into a constant,
during compiling when a variable is initiated.
比如
int x=20;
constexpr int y=x+1;
const X& foo() &
第二个&是要求foo是一个class的 method,foo这个function不会改变这个class fields
的值
比如
class X{
private:
int val;
...
const X & foo() &{
//you can not change X.val here
}
}
【在 A*******e 的大作中提到】 : 在别人程序里看到的。 : constexpr const char* x = "hello"; : 这里面的constexpr const是什么意思? : const X& foo() & { : ... : } : 第二个&是什么意思? : C++进化忒快了。
|
v******y 发帖数: 84 | 10 const A&&是一个right value,
所以在赋值的时候,直接是指针过去了,不用复制内容
【在 g*********e 的大作中提到】 : 还有这种 : class A{ : A(const A &&) {}; : A() : delete : } : 不知道都是什么玩意儿卧槽 : 还有人拼命用fbstring这些装b
|
|
|
l*********s 发帖数: 5409 | 11 I think his question is about A() : delete, it should be = delete right?
【在 v******y 的大作中提到】 : const A&&是一个right value, : 所以在赋值的时候,直接是指针过去了,不用复制内容
|
A*******e 发帖数: 2419 | 12 那这里两个一起用是什么意思?
【在 l*********s 的大作中提到】 : 应该说语义略有重叠。
|
A*******e 发帖数: 2419 | 13
编译没有问题。
fields
第二个应该是const X& foo() const吧。
【在 v******y 的大作中提到】 : 第一个装逼通得过编译么?简直就是扯淡 : constexpr隐含着const的意思,是implicitly indicates a const. : constexpr is an expression that can be evaluate into a constant, : during compiling when a variable is initiated. : 比如 : int x=20; : constexpr int y=x+1; : const X& foo() & : 第二个&是要求foo是一个class的 method,foo这个function不会改变这个class fields : 的值
|
A*******e 发帖数: 2419 | 14 const&也不用复制内容啊?
【在 v******y 的大作中提到】 : const A&&是一个right value, : 所以在赋值的时候,直接是指针过去了,不用复制内容
|
v******y 发帖数: 84 | 15 应该是=delete;
【在 l*********s 的大作中提到】 : I think his question is about A() : delete, it should be = delete right?
|
v******y 发帖数: 84 | 16 我看错了,可以是&, &&
对于一个class中fucntion, 除了()中传入参数之外,还implicit传入this
&的意思是传入的this 必须是lvalue, &&是rvalue
也可以是const, const&, const &&这二个组合
【在 A*******e 的大作中提到】 : const&也不用复制内容啊?
|
v******y 发帖数: 84 | 17 设想传入一个literal string "C++",
foo("C++")
foo(const string &) 和foo(const string &&)都可以接受这个"C++",都不会copy
如果二个函数同时存在,会调用第二个
但是不能调用foo(string &),但是可以调用foo(string &&)同时没有copy
foo(string) 会接受调用,但是会copy
&&可以接受literal 和unnamed temporary object.
【在 A*******e 的大作中提到】 : const&也不用复制内容啊?
|
A*******e 发帖数: 2419 | 18 原来第一个就是过去的 const char* const。
【在 A*******e 的大作中提到】 : 在别人程序里看到的。 : constexpr const char* x = "hello"; : 这里面的constexpr const是什么意思? : const X& foo() & { : ... : } : 第二个&是什么意思? : C++进化忒快了。
|