<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>编程语言 - 标签 - 种树的时间</title><link>https://zhongshutime.com/tags/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80/</link><description>编程语言 - 标签 - 种树的时间</description><generator>Hugo -- gohugo.io</generator><language>zh-CN</language><managingEditor>plantatree2023@gmail.com (种树者)</managingEditor><webMaster>plantatree2023@gmail.com (种树者)</webMaster><copyright>This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.</copyright><lastBuildDate>Sun, 16 Aug 2026 21:57:40 +0800</lastBuildDate><atom:link href="https://zhongshutime.com/tags/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80/" rel="self" type="application/rss+xml"/><item><title>C++操作protobuf</title><link>https://zhongshutime.com/cpp-protobuf/</link><pubDate>Sun, 16 Aug 2026 21:57:40 +0800</pubDate><author>plantatree2023@gmail.com (种树者)</author><guid>https://zhongshutime.com/cpp-protobuf/</guid><description><![CDATA[<p>我们用<a href="https://github.com/protocolbuffers/protobuf/blob/main/src/google/protobuf/struct.proto" target="_blank" rel="noopener noreffer ">google/protobuf/struct.proto</a>来研究cpp如何操作protobuf，然后用一个例子验证我们的理解。</p>
<p>首先看<code>google/protobuf/struct.proto</code>的结构：</p>]]></description></item><item><title>C++小抄cheatsheet</title><link>https://zhongshutime.com/cpp-cheatsheet/</link><pubDate>Sat, 15 Aug 2026 21:57:40 +0800</pubDate><author>plantatree2023@gmail.com (种树者)</author><guid>https://zhongshutime.com/cpp-cheatsheet/</guid><description><![CDATA[<h3 id="参考文档-references">参考文档 （References）</h3>
<ol>
<li><a href="https://www.cheat-sheets.org/saved-copy/cppqref.20210603.html" target="_blank" rel="noopener noreffer ">C++ QUICK REFERENCE by Matt Mahoney</a></li>
<li><a href="https://github.com/utkuufuk/cpp-quick-reference" target="_blank" rel="noopener noreffer ">C++ Quick reference by utkuufuk</a></li>
<li><a href="https://quickref.me/cpp.html" target="_blank" rel="noopener noreffer ">C++ cheatsheet by Fechin</a></li>
</ol>
<h3 id="预处理器preprocessor">预处理器（preprocessor）</h3>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-cpp">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-cpp" data-lang="cpp"><span class="line"><span class="cl">                        <span class="c1">// 单行comment
</span></span></span><span class="line"><span class="cl">                        <span class="cm">/* 多行comment */</span>
</span></span><span class="line"><span class="cl"><span class="cp">#include&lt;stdio.h&gt;       </span><span class="c1">// 插入标准头文件
</span></span></span><span class="line"><span class="cl"><span class="cp">#include</span> <span class="cpf">&#34;myfile.h&#34;</span><span class="cp">     </span><span class="c1">// 插入当前文件夹文件
</span></span></span><span class="line"><span class="cl"><span class="cp">#define X some text     </span><span class="c1">// 用some text替换X
</span></span></span><span class="line"><span class="cl"><span class="cp">#define F(a,b) a+b      </span><span class="c1">// 用1+2替换替换F(1,2)
</span></span></span><span class="line"><span class="cl"><span class="cp">#define X \
</span></span></span><span class="line"><span class="cl"><span class="cp">  some text             </span><span class="c1">// 继续行
</span></span></span><span class="line"><span class="cl"><span class="cp">#undef X                </span><span class="c1">// 移除定义
</span></span></span><span class="line"><span class="cl"><span class="cp">#if defined(X)          </span><span class="c1">// 条件编译 (#ifdef X)
</span></span></span><span class="line"><span class="cl"><span class="cp">#else                   </span><span class="c1">// 可选项 （#ifndex X 或 #if !defined(X))
</span></span></span><span class="line"><span class="cl"><span class="cp">#endif                  </span><span class="c1">// 必须出现在#if和#ifdef后
</span></span></span></code></pre></div></div>
<h3 id="字面量literals">字面量（literals）</h3>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-cpp">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-cpp" data-lang="cpp"><span class="line"><span class="cl"><span class="mi">255</span><span class="p">,</span> <span class="mo">0377</span><span class="p">,</span> <span class="mh">0xff</span>         <span class="c1">// 整数（十进制，八进制，十六进制）decimal，octal，hex
</span></span></span><span class="line"><span class="cl"><span class="mi">2147483647L</span><span class="p">,</span> <span class="mh">0x7fffffff1</span><span class="c1">// 长整型数（32位）（Long）
</span></span></span><span class="line"><span class="cl"><span class="mf">123.0</span><span class="p">,</span> <span class="mf">1.23e2</span>           <span class="c1">// 浮点数（double）
</span></span></span><span class="line"><span class="cl"><span class="sc">&#39;1&#39;</span><span class="p">,</span> <span class="sc">&#39;\141&#39;</span><span class="p">,</span> <span class="sc">&#39;\x61&#39;</span>     <span class="c1">// 字符（字面量，八进制，十六进制）
</span></span></span><span class="line"><span class="cl"><span class="sc">&#39;\n&#39;</span><span class="p">,</span> <span class="sc">&#39;\\&#39;</span><span class="p">,</span> <span class="sc">&#39;\&#39;&#39;</span><span class="p">,</span> <span class="sc">&#39;\&#34;&#39;</span>  <span class="c1">// 换行符，反斜杠，单引号，双引号
</span></span></span><span class="line"><span class="cl"><span class="s">&#34;string</span><span class="se">\n</span><span class="s">&#34;</span>              <span class="c1">// 以换行符和\0结尾的字符串数组
</span></span></span><span class="line"><span class="cl"><span class="s">&#34;hello&#34;</span> <span class="s">&#34;world&#34;</span>         <span class="c1">// 组合的字符串
</span></span></span><span class="line"><span class="cl"><span class="nb">true</span><span class="p">,</span> <span class="nb">false</span>             <span class="c1">// 布尔常量1和0
</span></span></span></code></pre></div></div>
<h3 id="声明declarations">声明（declarations）</h3>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-cpp">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-cpp" data-lang="cpp"><span class="line"><span class="cl"><span class="kt">int</span> <span class="n">x</span><span class="p">;</span>                  <span class="c1">// 声明x为一个整数（值未定义）
</span></span></span><span class="line"><span class="cl"><span class="kt">int</span> <span class="n">x</span><span class="o">=</span><span class="mi">255</span><span class="p">;</span>              <span class="c1">// 声明并初始化x为255
</span></span></span><span class="line"><span class="cl"><span class="kt">short</span> <span class="n">s</span><span class="p">;</span> <span class="kt">long</span> <span class="n">l</span><span class="p">;</span>        <span class="c1">// 16或32位整数
</span></span></span><span class="line"><span class="cl"><span class="kt">char</span> <span class="n">c</span><span class="o">=</span><span class="sc">&#39;a&#39;</span><span class="p">;</span>             <span class="c1">// 8位字符
</span></span></span><span class="line"><span class="cl"><span class="kt">unsigned</span> <span class="kt">char</span> <span class="n">u</span><span class="o">=</span><span class="mi">255</span><span class="p">;</span> <span class="kt">signed</span> <span class="kt">char</span> <span class="n">s</span><span class="o">=-</span><span class="mi">1</span><span class="p">;</span>  <span class="c1">// 字符可以是signed也可以是unsigned的
</span></span></span><span class="line"><span class="cl"><span class="kt">unsigned</span> <span class="kt">long</span> <span class="n">x</span><span class="o">=</span><span class="mh">0xffffffffL</span><span class="p">;</span>            <span class="c1">// short，int，long默认为signed的，除非特别标明
</span></span></span><span class="line"><span class="cl"><span class="kt">float</span> <span class="n">f</span><span class="p">;</span> <span class="kt">double</span> <span class="n">d</span><span class="p">;</span>      <span class="c1">// 单精度和双精度数（永不为unsigned的）
</span></span></span><span class="line"><span class="cl"><span class="kt">bool</span> <span class="n">b</span><span class="o">=</span><span class="nb">true</span><span class="p">;</span>            <span class="c1">// true或者false，也可以用整数1，0
</span></span></span><span class="line"><span class="cl"><span class="kt">int</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">c</span><span class="p">;</span>            <span class="c1">// 多个声明
</span></span></span><span class="line"><span class="cl"><span class="kt">int</span> <span class="n">a</span><span class="p">[</span><span class="mi">10</span><span class="p">];</span>              <span class="c1">// 一个10个整数的数组，a[0]到a[9]
</span></span></span><span class="line"><span class="cl"><span class="kt">int</span> <span class="n">a</span><span class="p">[]</span><span class="o">=</span><span class="p">{</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">};</span>        <span class="c1">// 一个初始化了的数组（或者int a[3]={0, 1, 2};)
</span></span></span><span class="line"><span class="cl"><span class="kt">int</span> <span class="n">a</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">3</span><span class="p">]</span><span class="o">=</span><span class="p">{{</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">},{</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">6</span><span class="p">}};</span>          <span class="c1">// 整数的二维数组
</span></span></span><span class="line"><span class="cl"><span class="kt">char</span> <span class="n">s</span><span class="p">[]</span><span class="o">=</span><span class="s">&#34;hello&#34;</span><span class="p">;</span>       <span class="c1">// 字符串（6个元素，包括&#39;\0&#39;）
</span></span></span><span class="line"><span class="cl"><span class="kt">int</span><span class="o">*</span> <span class="n">p</span><span class="p">;</span>                 <span class="c1">// p是一个整数的指针
</span></span></span><span class="line"><span class="cl"><span class="kt">char</span><span class="o">*</span> <span class="n">s</span><span class="o">=</span><span class="s">&#34;hello&#34;</span><span class="p">;</span>        <span class="c1">// s是一个未命名的，包含了&#34;hello&#34;的数组的指针
</span></span></span><span class="line"><span class="cl"><span class="kt">void</span><span class="o">*</span> <span class="n">p</span><span class="o">=</span><span class="nb">NULL</span><span class="p">;</span>           <span class="c1">// untyped内存的地址
</span></span></span><span class="line"><span class="cl"><span class="kt">int</span><span class="o">&amp;</span> <span class="n">r</span><span class="o">=</span><span class="n">x</span><span class="p">;</span>               <span class="c1">// r是整数x的(左值)引用
</span></span></span><span class="line"><span class="cl"><span class="n">T</span> <span class="n">a</span><span class="p">;</span> <span class="n">T</span><span class="o">&amp;</span> <span class="n">ref</span><span class="o">=</span><span class="n">a</span><span class="p">;</span>          <span class="c1">// ref 是 a 的(左值)引用
</span></span></span><span class="line"><span class="cl"><span class="n">ref</span><span class="p">.</span><span class="n">xxx</span><span class="p">;</span>                <span class="c1">// 实际调用 a.xxx
</span></span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">enum</span> <span class="nc">weekend</span> <span class="p">{</span><span class="n">SAT</span><span class="p">,</span><span class="n">SUN</span><span class="p">};</span> <span class="c1">// weekend是有值SAT和SUN的枚举类型
</span></span></span><span class="line"><span class="cl"><span class="k">enum</span> <span class="nc">weekend</span> <span class="n">day</span><span class="p">;</span>       <span class="c1">// day是weekend类型的变量
</span></span></span><span class="line"><span class="cl"><span class="k">enum</span> <span class="nc">weekend</span> <span class="p">{</span><span class="n">SAT</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">SUN</span><span class="o">=</span><span class="mi">1</span><span class="p">};</span>             <span class="c1">// 枚举类型显式表示为整数
</span></span></span><span class="line"><span class="cl"><span class="k">enum</span> <span class="p">{</span><span class="n">SAT</span><span class="p">,</span><span class="n">SUN</span><span class="p">}</span> <span class="n">day</span><span class="p">;</span>     <span class="c1">// 匿名枚举 TODO
</span></span></span><span class="line"><span class="cl"><span class="k">typedef</span> <span class="n">String</span> <span class="kt">char</span><span class="o">*</span><span class="p">;</span>   <span class="c1">// String s;表示 char* s;
</span></span></span><span class="line"><span class="cl"><span class="k">const</span> <span class="kt">int</span> <span class="n">c</span><span class="o">=</span><span class="mi">3</span><span class="p">;</span>          <span class="c1">// 常量必须被初始化，不能被重新赋值
</span></span></span><span class="line"><span class="cl"><span class="k">const</span> <span class="kt">int</span><span class="o">*</span> <span class="n">p</span><span class="o">=</span><span class="n">a</span><span class="p">;</span>         <span class="c1">// p的内容是常量
</span></span></span><span class="line"><span class="cl"><span class="kt">int</span><span class="o">*</span> <span class="k">const</span> <span class="n">p</span><span class="o">=</span><span class="n">a</span><span class="p">;</span>         <span class="c1">// p是常量，p的内容不是
</span></span></span><span class="line"><span class="cl"><span class="k">const</span> <span class="kt">int</span><span class="o">*</span> <span class="k">const</span> <span class="n">p</span><span class="o">=</span><span class="n">a</span><span class="p">;</span>   <span class="c1">// p和p的内容都是常量
</span></span></span><span class="line"><span class="cl"><span class="k">const</span> <span class="kt">int</span><span class="o">&amp;</span> <span class="n">cr</span><span class="o">=</span><span class="n">x</span><span class="p">;</span>        <span class="c1">// cr是一个常量引用，不能被赋值去修改他所指向的变量x的值
</span></span></span><span class="line"><span class="cl"><span class="k">auto</span> <span class="n">x</span> <span class="o">=</span> <span class="mi">10</span><span class="p">;</span>            <span class="c1">// 编译器推导类型
</span></span></span></code></pre></div></div>
<h3 id="存储类-storage-class">存储类 （storage class）</h3>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-cpp">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-cpp" data-lang="cpp"><span class="line"><span class="cl"><span class="kt">int</span> <span class="n">x</span><span class="p">;</span>                  <span class="c1">// 自动分配，内存分配仅在处于当前scope的时候存在
</span></span></span><span class="line"><span class="cl"><span class="k">static</span> <span class="kt">int</span> <span class="n">x</span><span class="p">;</span>           <span class="c1">// 全局声明周期，即使是在local scope中
</span></span></span><span class="line"><span class="cl"><span class="k">extern</span> <span class="kt">int</span> <span class="n">x</span><span class="p">;</span>           <span class="c1">// 有一个x整型变量存在，但不要在当前位置给他分配空间。它的真正定义和内存分配在程序的其他文件或位置
</span></span></span></code></pre></div></div>
<h3 id="语句-statement">语句 （statement）</h3>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-cpp">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-cpp" data-lang="cpp"><span class="line"><span class="cl"><span class="n">x</span><span class="o">=</span><span class="n">y</span><span class="p">;</span>                      <span class="c1">// 所有的表达式都是语句
</span></span></span><span class="line"><span class="cl"><span class="kt">int</span> <span class="n">x</span><span class="p">;</span>                    <span class="c1">// 声明是语句
</span></span></span><span class="line"><span class="cl"><span class="p">;</span>                         <span class="c1">// 空语句
</span></span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="p">{</span>                         <span class="c1">// 一个代码块是一个单一语句
</span></span></span><span class="line"><span class="cl">  <span class="kt">int</span> <span class="n">x</span><span class="p">;</span>                  <span class="c1">// x的scope是从声明开始直到代码块结束
</span></span></span><span class="line"><span class="cl">  <span class="n">a</span><span class="p">;</span>                      <span class="c1">// C语言中，所有变量的声明必须在语句前
</span></span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="k">if</span> <span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="n">a</span><span class="p">;</span>                 <span class="c1">// 如果x是true（非0），执行/计算a
</span></span></span><span class="line"><span class="cl"><span class="k">else</span> <span class="nf">if</span> <span class="p">(</span><span class="n">y</span><span class="p">)</span> <span class="n">b</span><span class="p">;</span>            <span class="c1">// 如果非x但是y，执行/计算b
</span></span></span><span class="line"><span class="cl"><span class="k">else</span> <span class="n">c</span><span class="p">;</span>                   <span class="c1">// 如果非x且非y，执行/计算c
</span></span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">while</span> <span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="n">a</span><span class="p">;</span>              <span class="c1">// 重复0次或多次，当x为true时
</span></span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">for</span> <span class="p">(</span><span class="n">x</span><span class="p">;</span> <span class="n">y</span><span class="p">;</span> <span class="n">z</span><span class="p">)</span> <span class="n">a</span><span class="p">;</span>          <span class="c1">// 等价于: x; while(y) {a; z;}
</span></span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">do</span> <span class="n">a</span><span class="p">;</span> <span class="k">while</span> <span class="p">(</span><span class="n">x</span><span class="p">);</span>          <span class="c1">// 等价于: a; while(x) a;
</span></span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">switch</span> <span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="p">{</span>              <span class="c1">// x必须是整数
</span></span></span><span class="line"><span class="cl">  <span class="k">case</span> <span class="nl">X1</span><span class="p">:</span> <span class="n">a</span><span class="p">;</span>             <span class="c1">// 如果x == X1 (X1必须为常量), 跳转到这
</span></span></span><span class="line"><span class="cl">  <span class="k">case</span> <span class="nl">X2</span><span class="p">:</span> <span class="n">b</span><span class="p">;</span>             <span class="c1">// 如果x == X2, 跳转到这
</span></span></span><span class="line"><span class="cl">  <span class="k">default</span><span class="o">:</span> <span class="n">c</span><span class="p">;</span>             <span class="c1">// 否则跳转到这（可选）
</span></span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="k">break</span><span class="p">;</span>                    <span class="c1">// 跳出while，do或for loop，或switch
</span></span></span><span class="line"><span class="cl"><span class="k">continue</span><span class="p">;</span>                 <span class="c1">// 跳到while, do, or for 循环底
</span></span></span><span class="line"><span class="cl"><span class="k">return</span> <span class="n">x</span><span class="p">;</span>                 <span class="c1">// 返回x给caller
</span></span></span><span class="line"><span class="cl"><span class="k">try</span> <span class="p">{</span> <span class="n">a</span><span class="p">;</span> <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="k">catch</span> <span class="p">(</span><span class="n">T</span> <span class="n">t</span><span class="p">)</span> <span class="p">{</span> <span class="n">b</span><span class="p">;</span> <span class="p">}</span>        <span class="c1">// 如果a抛出T，跳到这
</span></span></span><span class="line"><span class="cl"><span class="k">catch</span> <span class="p">(...)</span> <span class="p">{</span> <span class="n">c</span><span class="p">;</span> <span class="p">}</span>        <span class="c1">// 如果a抛出别的，跳到这
</span></span></span></code></pre></div></div>
<h3 id="函数functions">函数（functions）</h3>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-cpp">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-cpp" data-lang="cpp"><span class="line"><span class="cl"><span class="kt">int</span> <span class="nf">f</span><span class="p">(</span><span class="kt">int</span> <span class="n">x</span><span class="p">,</span> <span class="kt">int</span><span class="p">);</span>        <span class="c1">// f是一个接受两个整数，并返回整数的函数
</span></span></span><span class="line"><span class="cl"><span class="kt">void</span> <span class="nf">f</span><span class="p">();</span>                 <span class="c1">// f是一个不接受参数的过程（procedure）
</span></span></span><span class="line"><span class="cl"><span class="kt">void</span> <span class="nf">f</span><span class="p">(</span><span class="kt">int</span> <span class="n">a</span><span class="o">=</span><span class="mi">0</span><span class="p">);</span>          <span class="c1">// f()等价于f(0)
</span></span></span><span class="line"><span class="cl"><span class="n">f</span><span class="p">();</span>                      <span class="c1">// 默认返回类型是int
</span></span></span><span class="line"><span class="cl"><span class="kr">inline</span> <span class="nf">f</span><span class="p">();</span>               <span class="c1">// 优化执行速度
</span></span></span><span class="line"><span class="cl"><span class="n">f</span><span class="p">()</span> <span class="p">{</span> <span class="n">statements</span><span class="p">;</span> <span class="p">}</span>       <span class="c1">// 函数的定义必须放在全局作用域，即函数内部不能定义函数
</span></span></span><span class="line"><span class="cl"><span class="n">T</span> <span class="k">operator</span><span class="o">+</span><span class="p">(</span><span class="n">T</span> <span class="n">x</span><span class="p">,</span> <span class="n">T</span> <span class="n">y</span><span class="p">);</span>    <span class="c1">// a+b (当a b为T类型) 调用operator+(a, b)
</span></span></span><span class="line"><span class="cl"><span class="n">T</span> <span class="k">operator</span><span class="o">-</span><span class="p">(</span><span class="n">T</span> <span class="n">x</span><span class="p">);</span>         <span class="c1">// -a 调用函数 operator-(a)
</span></span></span><span class="line"><span class="cl"><span class="n">T</span> <span class="k">operator</span><span class="o">++</span><span class="p">(</span><span class="kt">int</span><span class="p">);</span>        <span class="c1">// 后缀++或--必须带有一个 int 类型的虚拟参数，但是调用时不需传入
</span></span></span><span class="line"><span class="cl"><span class="k">extern</span> <span class="s">&#34;C&#34;</span> <span class="p">{</span><span class="kt">void</span> <span class="nf">f</span><span class="p">();}</span>    <span class="c1">// f() 在 C中被编译
</span></span></span></code></pre></div></div>
<p>函数参数和返回值可以是任意类型。函数在被使用之前，必须先进行声明或定义。它可以先被声明，稍后再进行定义。每个程序都由一组全局变量声明和一组函数定义组成（这些内容可以分布在不同的文件中），其中必须包含以下函数之一：</p>]]></description></item></channel></rss>