This commit is contained in:
kelthuzadx 2022-07-02 05:22:59 +00:00
parent 383fd36750
commit 78eea2b431
10 changed files with 17 additions and 64 deletions

View File

@ -144,13 +144,12 @@
<p>本书的条款是<strong>指导方针</strong>,而不是<strong>规则</strong>因为指导方针也有例外。每个条款中最关键的部分不是提出的建议而是建议背后的基本原理。一旦你阅读了它你就明白你的程序的情况是否违反了条款的指导意见。本书的真正目的不是告诉你应该做什么不应该做什么而是帮你深入理解C++11和C++14中各种东西是如何工作的。</p>
<h3 id="术语和惯例"><a class="header" href="#术语和惯例">术语和惯例</a></h3>
<p>为了保证我们互相理解对一些术语达成共识非常重要首先有点讽刺的是“C++”。有四个C++官方版本每个版本名字后面带有相应ISO标准被采纳时的年份C++98C++03C++11和C++14。C++98和C++03只有技术细节上的区别所以本书统称为C++98。当我提到C++11时我的意思是C++11和C++14因为C++14是C++11的超集当我写下C++14我只意味着C++14。如果我仅仅提到C++,说明适用于所有的语言版本。</p>
<div class="table-wrapper"><table><thead><tr><th>我使用的词</th><th>我意思中的语言版本</th></tr></thead><tbody>
<table><thead><tr><th>我使用的词</th><th>我意思中的语言版本</th></tr></thead><tbody>
<tr><td>C++</td><td>所有版本</td></tr>
<tr><td>C++98</td><td>C++98和C++03</td></tr>
<tr><td>C++11</td><td>C++11和C++14</td></tr>
<tr><td>C++14</td><td>C++14</td></tr>
</tbody></table>
</div>
<p>因此我可能会说C++重视效率对所有版本正确C++98缺少并发的支持只对C++98和C++03正确C++11支持<em>lambda</em>表达式对C++11和C++14正确C++14提供了普遍的函数返回类型推导只对C++14正确</p>
<p>最遍布C++11各处的特性可能是移动语义了移动语义的基础是区分右值和左值表达式。那是因为右值表明这个对象适合移动操作而左值一般不适合。概念上尽管不经常在实际上用右值对应于从函数返回的临时对象而左值对应于你可以引用的can refer to对象或者通过名字或者通过指针或左值引用。</p>
<p>对于判断一个表达式是否是左值的一个有用的启发就是,看看能否取得它的地址。如果能取地址,那么通常就是左值。如果不能,则通常是右值。这个启发的好处就是帮你记住,一个表达式的类型与它是左值还是右值无关。也就是说,有个类型<code>T</code>,你可以有类型<code>T</code>的左值和右值。当你碰到右值引用类型的形参时,记住这一点非常重要,因为形参本身是个左值:</p>

View File

@ -8,6 +8,7 @@ Original by Dempfi (https://github.com/dempfi/ayu)
overflow-x: auto;
background: #191f26;
color: #e6e1cf;
padding: 0.5em;
}
.hljs-comment,

View File

@ -208,63 +208,24 @@ pre {
pre > .buttons {
position: absolute;
z-index: 100;
right: 0px;
top: 2px;
margin: 0px;
padding: 2px 0px;
right: 5px;
top: 5px;
color: var(--sidebar-fg);
cursor: pointer;
visibility: hidden;
opacity: 0;
transition: visibility 0.1s linear, opacity 0.1s linear;
}
pre:hover > .buttons {
visibility: visible;
opacity: 1
}
pre > .buttons :hover {
color: var(--sidebar-active);
border-color: var(--icons-hover);
background-color: var(--theme-hover);
}
pre > .buttons i {
margin-left: 8px;
}
pre > .buttons button {
color: inherit;
background: transparent;
border: none;
cursor: inherit;
margin: 0px 5px;
padding: 3px 5px;
font-size: 14px;
border-style: solid;
border-width: 1px;
border-radius: 4px;
border-color: var(--icons);
background-color: var(--theme-popup-bg);
transition: 100ms;
transition-property: color,border-color,background-color;
color: var(--icons);
}
@media (pointer: coarse) {
pre > .buttons button {
/* On mobile, make it easier to tap buttons. */
padding: 0.3rem 1rem;
}
}
code {
padding: 1rem;
}
/* FIXME: ACE editors overlap their buttons because ACE does absolute
positioning within the code block which breaks padding. The only solution I
can think of is to move the padding to the outer pre tag (or insert a div
wrapper), but that would require fixing a whole bunch of CSS rules.
*/
.hljs.ace_editor {
padding: 0rem 0rem;
}
pre > .result {
margin-top: 10px;
}

View File

@ -26,16 +26,6 @@ code {
font-size: 0.875em; /* please adjust the ace font size accordingly in editor.js */
}
/* make long words/inline code not x overflow */
main {
overflow-wrap: break-word;
}
/* make wide tables scroll if they overflow */
.table-wrapper {
overflow-x: auto;
}
/* Don't change font size in headers. */
h1 code, h2 code, h3 code, h4 code, h5 code, h6 code {
font-size: unset;
@ -90,7 +80,8 @@ h6:target::before {
.content {
overflow-y: auto;
padding: 0 5px 50px 5px;
padding: 0 15px;
padding-bottom: 50px;
}
.content main {
margin-left: auto;

View File

@ -61,6 +61,7 @@
overflow-x: auto;
background: #f6f7f6;
color: #000;
padding: 0.5em;
}
.hljs-emphasis {

File diff suppressed because one or more lines are too long

View File

@ -145,13 +145,12 @@
<p>本书的条款是<strong>指导方针</strong>,而不是<strong>规则</strong>因为指导方针也有例外。每个条款中最关键的部分不是提出的建议而是建议背后的基本原理。一旦你阅读了它你就明白你的程序的情况是否违反了条款的指导意见。本书的真正目的不是告诉你应该做什么不应该做什么而是帮你深入理解C++11和C++14中各种东西是如何工作的。</p>
<h3 id="术语和惯例"><a class="header" href="#术语和惯例">术语和惯例</a></h3>
<p>为了保证我们互相理解对一些术语达成共识非常重要首先有点讽刺的是“C++”。有四个C++官方版本每个版本名字后面带有相应ISO标准被采纳时的年份C++98C++03C++11和C++14。C++98和C++03只有技术细节上的区别所以本书统称为C++98。当我提到C++11时我的意思是C++11和C++14因为C++14是C++11的超集当我写下C++14我只意味着C++14。如果我仅仅提到C++,说明适用于所有的语言版本。</p>
<div class="table-wrapper"><table><thead><tr><th>我使用的词</th><th>我意思中的语言版本</th></tr></thead><tbody>
<table><thead><tr><th>我使用的词</th><th>我意思中的语言版本</th></tr></thead><tbody>
<tr><td>C++</td><td>所有版本</td></tr>
<tr><td>C++98</td><td>C++98和C++03</td></tr>
<tr><td>C++11</td><td>C++11和C++14</td></tr>
<tr><td>C++14</td><td>C++14</td></tr>
</tbody></table>
</div>
<p>因此我可能会说C++重视效率对所有版本正确C++98缺少并发的支持只对C++98和C++03正确C++11支持<em>lambda</em>表达式对C++11和C++14正确C++14提供了普遍的函数返回类型推导只对C++14正确</p>
<p>最遍布C++11各处的特性可能是移动语义了移动语义的基础是区分右值和左值表达式。那是因为右值表明这个对象适合移动操作而左值一般不适合。概念上尽管不经常在实际上用右值对应于从函数返回的临时对象而左值对应于你可以引用的can refer to对象或者通过名字或者通过指针或左值引用。</p>
<p>对于判断一个表达式是否是左值的一个有用的启发就是,看看能否取得它的地址。如果能取地址,那么通常就是左值。如果不能,则通常是右值。这个启发的好处就是帮你记住,一个表达式的类型与它是左值还是右值无关。也就是说,有个类型<code>T</code>,你可以有类型<code>T</code>的左值和右值。当你碰到右值引用类型的形参时,记住这一点非常重要,因为形参本身是个左值:</p>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -81,6 +81,8 @@
overflow-x: auto;
background: #1d1f21;
color: #c5c8c6;
padding: 0.5em;
-webkit-text-size-adjust: none;
}
.coffeescript .javascript,