hg_*_*git 7 c++ static const constexpr c++11
我与这些说明完全失望,因为我明白,当他们自己,他们做什么,但我发现时,他们互相用他们很难理解.例如,野外的一些代码包含 -
namespace{
static constexpr char const *Hello[] = { "HelloString", "WorldString"};
...
}
Run Code Online (Sandbox Code Playgroud)
这甚至做了什么?
const呢?const *Hello对我没有意义.这里有什么不变的?字符串或指针*Hello?最糟糕的是,它编译:/.当然它会编译,因为它们是有效的陈述,但它甚至意味着什么?
为什么在已经在匿名命名空间内时使用静态?
我没有看到这里的理由,除非它是为C++ 03兼容性而编写的.
为什么使用
constexpr- 这里没有理由使用它.不会是一个简单的const会做什么?
同样,这里没有必要,但它确实表明它是一个编译时常量.还要注意,constexpr这里的意思是指针constexpr,并且删除了const之后的需要*(参见下一部分).
const *Hello对我来说没有意义.这里有什么不变的?字符串或指针*你好?
const适用于左边,除非在这种情况下没有任何内容适用于右边.const左侧是*指解除引用时指针是常量,而右侧是指指向某个东西的常量指针.
char const * ptr = "Foo";
ptr[0] = 'B'; //error, ptr[0] is const
char * const ptr = "Foo";
ptr = new char[10]; //error, ptr is const
char const * const ptr = "Foo"; //cannot assign to either ptr or *ptr
constexpr char const* ptr = "Foo"; //same as above, constexpr replaced last const
Run Code Online (Sandbox Code Playgroud)
我发现"左右"规则中的这个页面确实有助于理解复杂的声明.
| 归档时间: |
|
| 查看次数: |
589 次 |
| 最近记录: |