mirror of
https://github.com/cpp-best-practices/cppbestpractices.git
synced 2025-12-17 03:04:36 +03:00
Several minor improvements
Fixed some typos, added some links and some further minor improvements
This commit is contained in:
@@ -274,7 +274,7 @@ There is almost never a reason to declare an identifier in the global namespaces
|
||||
|
||||
## Use the Correct Integer Type For stdlib Features
|
||||
|
||||
The standard library generally returns `size_t` for anything related to size. What exactly `size_t` is is implementation defined.
|
||||
The standard library generally returns `size_t` for anything related to size. What exactly `size_t` is, is implementation defined.
|
||||
|
||||
In general, using `auto` will avoid most of these issues, but not all.
|
||||
|
||||
@@ -312,7 +312,7 @@ However, you can easily create unreadable expressions using too much or wrong op
|
||||
|
||||
More detailed, you should keep these things in mind:
|
||||
|
||||
* Overloading `operator=` when handling with resources is a must, see "Consider the Rule of Zero" below.
|
||||
* Overloading `operator=` when handling with resources is a must, see [Consider the Rule of Zero](03-Style.md#consider-the-rule-of-zero) below.
|
||||
* For all other operators, only overload them when they are used in a context that is commonly connected to these operators. Typical scenarios are concatenating things with +, negating expressions that can be considered "true" or "false", etc.
|
||||
* Always be aware of the [operator precedence](http://en.cppreference.com/w/cpp/language/operator_precedence) and try to circumvent unintuitive constructs.
|
||||
* Do not overload exotic operators such as ~ or %.
|
||||
@@ -332,7 +332,7 @@ Instead mark single parameter constructors as `explicit`, which requires them to
|
||||
|
||||
### Conversion Operators
|
||||
|
||||
Similarly to single parameter constructors, conversion operators can be called by the compiler and introduce unexpected overhead. The should also be marked as `explicit`.
|
||||
Similarly to single parameter constructors, conversion operators can be called by the compiler and introduce unexpected overhead. They should also be marked as `explicit`.
|
||||
|
||||
|
||||
## Consider the Rule of Zero
|
||||
|
||||
@@ -21,7 +21,7 @@ public:
|
||||
|
||||
private:
|
||||
std::string m_value;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
// Good Idea
|
||||
@@ -40,7 +40,7 @@ public:
|
||||
|
||||
private:
|
||||
std::string m_value;
|
||||
}
|
||||
};
|
||||
```
|
||||
|
||||
### Consider Return By Value for Mutable Data, `const &` for Immutable
|
||||
@@ -68,7 +68,6 @@ auto mybuffer = std::make_unique<char[]>(length); // C++14
|
||||
auto mybuffer = std::unique_ptr<char[]>(new char[length]); // C++11
|
||||
|
||||
// or for reference counted objects
|
||||
|
||||
auto myobj = std::make_shared<MyClass>();
|
||||
|
||||
// ...
|
||||
@@ -98,7 +97,7 @@ int i = (int) x;
|
||||
// Good Idea
|
||||
int i = static_cast<int>(x);
|
||||
```
|
||||
Additionaly the C++ cast style is more visible and has the possiblity to search for.
|
||||
Additionally the C++ cast style is more visible and has the possibility to search for.
|
||||
|
||||
## Additional Resources
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ namespace my_project {
|
||||
// static const double 3.14159 = 3.14159;
|
||||
// which leads to a compile-time error. Sometimes such errors are hard to understand.
|
||||
static const double PI = 3.14159;
|
||||
}
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ Besides being global data, statics are not always constructed and deconstructed
|
||||
|
||||
### Singletons
|
||||
|
||||
A singleton is often implemented with a static and/or `shared_ptr`
|
||||
A singleton is often implemented with a static and/or `shared_ptr`.
|
||||
|
||||
## Avoid Heap Operations
|
||||
|
||||
|
||||
@@ -8,4 +8,4 @@
|
||||
* https://svn.boost.org/trac/boost/wiki/BestPracticeHandbook - Best Practice Handbook from Nial Douglas
|
||||
* http://sourceforge.net/apps/mediawiki/cppcheck/index.php?title=ListOfChecks
|
||||
* http://emptycrate.com/
|
||||
* http://stackoverflow.com/questions/tagged/c%2b%2b-faq?sort=votes&pageSize=15 StackOverflow C++ FAQ
|
||||
* http://stackoverflow.com/questions/tagged/c%2b%2b-faq?sort=votes&pageSize=15 - StackOverflow C++ FAQ
|
||||
|
||||
Reference in New Issue
Block a user