mirror of
https://github.com/isocpp/CppCoreGuidelines.git
synced 2024-03-22 13:30:58 +08:00
fixed typos
This commit is contained in:
parent
fac322ee67
commit
a6051b2058
|
@ -13664,7 +13664,7 @@ In general, however, avoid concrete base classes (see Item 35). For example, `un
|
||||||
|
|
||||||
**References**: [[C++CS]](#C++CS) Item 50, [[Cargill92]](#Cargill92) pp. 77-79, 207¸ [[Cline99]](#Cline99) §21.06, 21.12-13¸ [[Henricson97]](#Henricson97) pp. 110-114¸ [[Koenig97]](#Koenig97) Chapters 4, 11¸ [[Meyers97]](#Meyers97) §14¸ [[Stroustrup00]](#Stroustrup00) §12.4.2¸ [[Sutter02]](#Sutter02) §27¸ [[Sutter04]](#Sutter04) §18
|
**References**: [[C++CS]](#C++CS) Item 50, [[Cargill92]](#Cargill92) pp. 77-79, 207¸ [[Cline99]](#Cline99) §21.06, 21.12-13¸ [[Henricson97]](#Henricson97) pp. 110-114¸ [[Koenig97]](#Koenig97) Chapters 4, 11¸ [[Meyers97]](#Meyers97) §14¸ [[Stroustrup00]](#Stroustrup00) §12.4.2¸ [[Sutter02]](#Sutter02) §27¸ [[Sutter04]](#Sutter04) §18
|
||||||
|
|
||||||
### <a name="Sd-noexcept"></a> Discussion: Usage of noexecpt
|
### <a name="Sd-noexcept"></a> Discussion: Usage of noexcept
|
||||||
|
|
||||||
???
|
???
|
||||||
|
|
||||||
|
@ -13726,7 +13726,7 @@ Never allow an error to be reported from a destructor, a resource deallocation f
|
||||||
5. You can't use `Nefarious` objects in standard containers:
|
5. You can't use `Nefarious` objects in standard containers:
|
||||||
|
|
||||||
|
|
||||||
std::vector<nefarious> vec(10); // this is line can std::terminate()
|
std::vector<nefarious> vec(10); // this line can std::terminate()
|
||||||
|
|
||||||
The standard library forbids all destructors used with it from throwing. You can't store `nefarious` objects in standard containers or use them with any other part of the standard library.
|
The standard library forbids all destructors used with it from throwing. You can't store `nefarious` objects in standard containers or use them with any other part of the standard library.
|
||||||
|
|
||||||
|
@ -13879,7 +13879,7 @@ This class is a resource handle. It manages the lifetime of the `T`s. To do so,
|
||||||
|
|
||||||
##### Enforcement
|
##### Enforcement
|
||||||
|
|
||||||
The basic technique for preventing leaks is to have every resource owned by a resource handle with a suitable destructor. A checker can find "naked `new`s". Given a list of C-style allocation functions (e.g., `fopen()`), a checker can also find uses that are not managed by a resource handle. In general, "naked pointers" can be viewed with suspicion, flagged, and/or analyzed. A a complete list of resources cannot be generated without human input (the definition of "a resource" is necessarily too general), but a tool can be "parameterized" with a resource list.
|
The basic technique for preventing leaks is to have every resource owned by a resource handle with a suitable destructor. A checker can find "naked `new`s". Given a list of C-style allocation functions (e.g., `fopen()`), a checker can also find uses that are not managed by a resource handle. In general, "naked pointers" can be viewed with suspicion, flagged, and/or analyzed. A complete list of resources cannot be generated without human input (the definition of "a resource" is necessarily too general), but a tool can be "parameterized" with a resource list.
|
||||||
|
|
||||||
### <a name="Cr-never"></a> Never throw while holding a resource not owned by a handle
|
### <a name="Cr-never"></a> Never throw while holding a resource not owned by a handle
|
||||||
|
|
||||||
|
@ -13954,7 +13954,7 @@ To avoid extremely hard-to-find errors. Dereferencing such a pointer is undefine
|
||||||
{
|
{
|
||||||
string* p = bad();
|
string* p = bad();
|
||||||
vector<int> xx = {7, 8, 9};
|
vector<int> xx = {7, 8, 9};
|
||||||
string x = *p; // undefined behavior: x may not be 1
|
string x = *p; // undefined behavior: x may not be "this"
|
||||||
*p = "Evil!"; // undefined behavior: we don't know what (if anything) is allocated a location p
|
*p = "Evil!"; // undefined behavior: we don't know what (if anything) is allocated a location p
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13962,7 +13962,7 @@ The `string`s of `v` are destroyed upon exit from `bad()` and so is `v` itself.
|
||||||
|
|
||||||
##### Enforcement
|
##### Enforcement
|
||||||
|
|
||||||
Most compilers already warn about simple cases and has the information to do more. Consider any pointer returned from a function suspect. Use containers, resource handles, and views (e.g., `span` known not to be resource handles) to lower the number of cases to be examined. For starters, consider every class with a destructor a resource handle.
|
Most compilers already warn about simple cases and has the information to do more. Consider any pointer returned from a function suspect. Use containers, resource handles, and views (e.g., `span` known not to be resource handles) to lower the number of cases to be examined. For starters, consider every class with a destructor as resource handle.
|
||||||
|
|
||||||
### <a name="Cr-templates"></a> Use templates to express containers (and other resource handles)
|
### <a name="Cr-templates"></a> Use templates to express containers (and other resource handles)
|
||||||
|
|
||||||
|
@ -14025,7 +14025,7 @@ Now `Named` has a default constructor, a destructor, and efficient copy and move
|
||||||
|
|
||||||
##### Enforcement
|
##### Enforcement
|
||||||
|
|
||||||
In general, a tool cannot know if a class is a resource handle. However, if a class has some of [the default operations](#SS-ctor), it should have all, and if a class has a member that is a resource handle, it should be considered a resource handle.
|
In general, a tool cannot know if a class is a resource handle. However, if a class has some of [the default operations](#SS-ctor), it should have all, and if a class has a member that is a resource handle, it should be considered as resource handle.
|
||||||
|
|
||||||
### <a name="Cr-list"></a> If a class is a container, give it an initializer-list constructor
|
### <a name="Cr-list"></a> If a class is a container, give it an initializer-list constructor
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user