我总是搞砸了怎么用const int*,const int * const和int const *正确的.是否有一套规则来定义您能做什么和不能做什么?
我想知道在任务,传递到职能等方面所做的所有事情和所有不应做的事情.
你走多远const?您是否只是const在必要时制作功能,或者您是否全力以赴并在任何地方使用它?例如,想象一个简单的mutator,它接受一个布尔参数:
void SetValue(const bool b) { my_val_ = b; }
Run Code Online (Sandbox Code Playgroud)
这const实际上有用吗?我个人选择广泛使用它,包括参数,但在这种情况下,我想知道它是否值得?
我还惊讶地发现你可以省略const函数声明中的参数,但可以将它包含在函数定义中,例如:
.h文件
void func(int n, long l);
Run Code Online (Sandbox Code Playgroud)
.cpp文件
void func(const int n, const long l)
Run Code Online (Sandbox Code Playgroud)
是否有一个原因?这对我来说似乎有点不寻常.
以下定义之间有区别吗?
const double PI = 3.141592653589793;
constexpr double PI = 3.141592653589793;
Run Code Online (Sandbox Code Playgroud)
如果没有,在C++ 11中首选哪种风格?
我使用C++的个人风格总是把类声明放在一个包含文件中,并在.cpp文件中定义,非常类似于Loki对C++头文件,代码分离的回答.不可否认,我喜欢这种风格的部分原因可能与我花费编码Modula-2和Ada的所有年份有关,两者都有与规范文件和正文文件类似的方案.
我有一个同事,比我更了解C++,他坚持认为所有的C++声明应尽可能在头文件中包含定义.他并不是说这是一种有效的替代风格,甚至是一种稍微好一点的风格,而是这是每个人现在都用于C++的新普遍接受的风格.
我不像以前那样柔软,所以我并不急于拼抢他的这个潮流,直到我看到更多的人和他在一起.那个成语真的有多常见?
只是给出答案的一些结构:它现在是The Way,非常常见,有点普遍,不常见,还是出错?
例如,是
int const x = 3;
Run Code Online (Sandbox Code Playgroud)
有效代码?
如果是这样,它是否意味着相同
const int x = 3;
Run Code Online (Sandbox Code Playgroud)
?
我知道关于const正确性的问题很少,其中声明函数的声明及其定义不需要同意值参数.这是因为值参数的常量仅在函数内部很重要.这可以:
// header
int func(int i);
// cpp
int func(const int i) {
return i;
}
Run Code Online (Sandbox Code Playgroud)
这样做真的是最好的做法吗?因为我从未见过有人这样做过.我已经在其他地方看过这个引用(不确定来源),这已被讨论过:
"事实上,对于编译器,无论是否在值参数前面包含此const,函数签名都是相同的."
"避免在函数声明中使用const值传递参数.如果不修改参数const,则仍然将参数const置于同一函数的定义中."
第二段说不要将const放在声明中.我假设这是因为值参数的常量作为接口定义的一部分是没有意义的.这是一个实现细节.
根据这个建议,是否也建议指针参数的指针值?(它对参考参数没有意义,因为您无法重新分配参考.)
// header
int func1(int* i);
int func2(int* i);
// cpp
int func1(int* i) {
int x = 0;
*i = 3; // compiles without error
i = &x; // compiles without error
return *i;
}
int func2(int* const i) {
int x = 0;
*i = 3; // compiles without error
i = &x; // compile error
return *i; …Run Code Online (Sandbox Code Playgroud) 当我在线时似乎每个人都同意在源代码管理中使用独占锁定工作流程是一件坏事.我看到的所有新版本控制系统似乎都是为编辑和合并工作流而构建的,许多甚至根本不支持独占锁.
然而,我与之合作的每个人都认为,对于任何源控制系统来说,排他锁都是"必备",而以任何其他方式工作将是一场噩梦.即使是最近从其他公司招聘的员工也似乎也有这个想法.
我的问题不是谁是对的.我很确定我会得到什么答案.我的问题是,这个问题真的还有争论吗?是否有一个诚实的"亲锁"营地,这是一个严重的案件?是否正在进行任何工作以推进基于锁定模型的版本控制技术?还是锁定风扇鞭打死马?
编辑:迄今为止的答案已经很好地解释了为什么独占锁是一个偶尔使用的好功能.不过,我说的是促进地方独占锁用于工作流的一切.