⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cppgossip.html

📁 关于 C++ 的历史无须我来介绍了
💻 HTML
字号:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

  <link rel="stylesheet" href="css/stdlayout.css" type="text/css">

  <link rel="stylesheet" href="css/print.css" type="text/css">

  <meta content="text/html; charset=gb2312" http-equiv="content-type">
  <title>C++ 学习笔记</title>


</head>


<body>

<h3><a href="http://caterpillar.onlyfun.net/GossipCN/index.html">From
Gossip@caterpillar</a></h3>

<h1>语言技术:C++ Gossip</h1>

<br>

<img title="C++是个小恶魔" style="width: 100px; height: 103px; float: left;" alt="C++ 学习笔记" src="images/littledevil.jpg"> 关于 C++
的历史无须我来介绍了,有兴趣的可以用搜寻引擎来找出一堆谈 C++ 历史的,C++
是个历久不衰的程式语言,功能强大但入门不易,后期有很多的程式语言致力于拥有 C++
大部份的功能并去除其不易掌握的部份,即使后期的程式语言如此之多,但 C++ 仍在程式语言工具中占有一席之地。<br>

<br>

这是我的 C++ 学习笔记第二个版本,主要的目的是将 <a href="http://www.freepgs.com/caterpillar/chm/CPPMemorandum_Trad.CHM">之
的 .chm 文件</a> 改为网页格式,并重新看看有没有什么语法或观念的错误,也藉此复习一下
C++,文件中所有的范例都是在 <a href="http://www.bloodshed.net/dev/devcpp.html">Dev
C++</a> 4.9.9.2 中撰写测试。<br>

<br>

<dl>

  <dt>入门基础</dt>

</dl>

&nbsp; &nbsp; &nbsp; &nbsp;
学习程式语言的第一件事,通常就是先作个简单的程式来运行一下,并且从了解程式语言的资料型态、变数与流程控制语法开始。<br>

<ul>

  <li>资料型态与变数</li>

</ul>

<div style="margin-left: 40px;">&nbsp; &nbsp;
&nbsp; &nbsp; 无论如何 先来个
"Hello! World!" 显示一下程式执行结果,增加一点撰写程式的信心!接着就耐心的了解一下 C++ 的资料型态,以认识一下变数、常数。</div>

<ul>

  <ul>

    <li><a href="HelloWorld.html">Hello! World!</a></li>

    <li><a href="DataType.html">资料型态(Data type)</a></li>

    <li><a href="LiteralConstant.html">字面常量(Literal
constant)</a></li>

    <li><a href="Variable.html">变数(Variable)</a></li>

    <li><a href="CinCout.html">终端机输入输出(Input/Output)</a></li>

  </ul>

</ul>

<ul>

  <li>运算</li>

</ul>

<div style="margin-left: 40px;">&nbsp; &nbsp;
&nbsp; &nbsp;
程式的目的简单的说就是运算、运算还是运算,加减乘除这类的动作是少不得的,在C++中提供运算功能的就是运算子(Operator)。<br>

</div>

<ul>

  <ul>

    <li><a href="ArithmeticOperator.html">算术
(Arithmetic)运算、型态转换(Type
conversion)</a></li>

    <li><a href="RelationalConditional.html">关系
(Relational)运算、条件
(Conditional)运算</a></li>

    <li><a href="LogicalBitwise.html">逻辑(Logical)运算、位
元(Bitwise)运算</a></li>

    <li><a href="IncrementDecrement.html">递增
(Increment)、递减(Decrement)、指定
(Assignment)运算</a></li>

  </ul>

</ul>

<ul>

  <li>流程控制</li>

</ul>

<div style="margin-left: 40px;">&nbsp; &nbsp;
&nbsp; &nbsp;
流程控制语法是程式设计的基本,藉由各种条件判断与回圈重覆执行语法,您可以令您的程式因应不同的状况而作出不同的回应。</div>

<ul>

  <ul>

    <li><a href="ifStatement.html">if 条件判断</a></li>

    <li><a href="switchStatement.html">switch 条件判断</a></li>

    <li><a href="forStatement.html">for 回圈</a></li>

    <li><a href="whileStatement.html">while 回圈</a></li>

    <li><a href="breakContinueGoto.html">break、
continue、goto</a></li>

  </ul>

</ul>

<br>

<dl>

  <dt>进阶型态</dt>

</dl>

&nbsp; &nbsp; &nbsp; &nbsp;
阵列、字串、指标这几种C++的进阶型态相当常被使用,虽然看似复杂,但彼此之间互有相关,另外这边也介绍一下C++中的列举(Enumeration)
型态。<br>

<ul>

  <li>阵列(Array)</li>

</ul>

<div style="margin-left: 40px;">&nbsp; &nbsp;
&nbsp; &nbsp;
各种型态的阵列各有其不同的用途,但无论如何,先从基本型态的一维阵列、二维阵列开始认识起。</div>

<ul>

  <ul>

    <li><a href="OneDimArray.html">一维阵列</a></li>

    <li><a href="TwoDimArray.html">二维阵列</a></li>

  </ul>

</ul>

<ul>

  <li>向量(Vector)</li>

</ul>

<div style="margin-left: 40px;">&nbsp; &nbsp;
&nbsp; &nbsp;
C++提供了内建阵列的替代型态 vector,vector 可以如同阵列一般的操作,并记得自己的长度资讯,您也可以使用物件的方式来操作
vector 。</div>

<ul>

  <ul>

    <li><a href="vector1.html">阵列型式(Array idiom)
vector&nbsp;</a></li>

    <li><a href="vector2.html">STL 型式(STL idiom)
vector</a></li>

  </ul>

</ul>

<ul>

  <li>字串(String)</li>

</ul>

<div style="margin-left: 40px;">&nbsp; &nbsp;
&nbsp; &nbsp;
字串的本质是字元阵列,而在C++中还可以使用string类别来表现字串,两者都有了解的必要。</div>

<ul>

  <ul>

    <li><a href="string1.html">字元阵列(C-style 字串)</a></li>

    <li><a href="string2.html">使用 string 型态</a></li>

  </ul>

</ul>

<ul>

  <li>指标(Pointer)</li>

</ul>

<div style="margin-left: 40px;">&nbsp; &nbsp;
&nbsp; &nbsp;
指标可指向一个记忆体位址,可对物件作间接操作,指标拥有型态,这用来告诉编译器如何解释记忆体空间的内容,以及每一次运算的大小。</div>

<ul>

  <ul>

    <li><a href="Pointer.html">指标与记忆体位址</a></li>

    <li><a href="PointerArithmetic.html">指标的运算</a></li>

    <li><a href="PointerAndArray.html">指标与阵列</a></li>

    <li><a href="newDelete.html">new 运算子与 delete 运算子</a>
    </li>

    <li><a href="DoublePointer.html">双重指标</a></li>

    <li><a href="PointerAndString.html">指标与字串</a></li>

    <li><a href="CommandArg.html">命令列引数</a></li>

    <li><a href="Reference.html">参考(Reference)</a></li>

  </ul>

</ul>

<span style="font-weight: bold;"><br>

</span>
<dl>

  <dt>函式</dt>

</dl>

&nbsp; &nbsp; &nbsp; &nbsp;
程式中超过两次以上重复使用的程式码,可以考虑将之定义为函式,以便重覆呼叫使用,降低相同程式片段的维护成本。<br>

<ul>

  <li>函式入门</li>

</ul>

<div style="margin-left: 40px;">&nbsp; &nbsp;
&nbsp; &nbsp;
先简介一些与函式定义相关的几个语法,并谈谈几个变数可视范围的议题。</div>

<ul>

  <ul>

    <li><a href="FunctionABC.html">函式简介</a></li>

    <li><a href="inlineFunction.html">行内函式(Inline
function)</a></li>

    <li><a href="DefaultArgument.html">预设引数</a></li>

    <li><a href="OverloadedFunction.html">重载函式
(Overloaded function)</a></li>

    <li><a href="Scope.html">变数可视范围(Scope)</a></li>

  </ul>

</ul>

<ul>

  <li>进阶议题</li>

</ul>

<div style="margin-left: 40px;">&nbsp; &nbsp;
&nbsp; &nbsp;
递回呼叫、传值、传址、传参考等,这些议题在函式的使用上关乎执行资源的使用与效率问题。</div>

<ul>

  <ul>

    <li><a href="Recursion.html">递回(Recursion)</a></li>

    <li><a href="PassBy.html">参数的传值、传参考</a></li>

    <li><a href="returnBy.html">return 的传值、传参考</a></li>

    <li><a href="VarArg.html">不定长度引数(Variable-length
argument)</a></li>

    <li><a href="FunctionPointer.html">函式指标</a></li>

  </ul>

</ul>

<br>

<dl>

  <dt>物件基础</dt>

</dl>

&nbsp; &nbsp; &nbsp; &nbsp;
以物件为基础的程式设计,将程式中互动的单元视为一个个的物件。
<ul>

  <li>封装(Encapsulation)</li>

</ul>

<div style="margin-left: 40px;">&nbsp; &nbsp;
&nbsp; &nbsp;
封装物件资讯是第一步,您要了解如何使用类别定义物件,像是定义物件的属性、行为等等,类别是建构物件
时所依赖的规格书。</div>

<ul>

  <ul>

    <li><a href="ClassABC.html">简介类别(Class)</a></li>

    <li><a href="ConstructorDestructor.html">建构函式、解构函
式</a></li>

    <li><a href="autoPtr.html">auto_ptr 自动管理配置资源</a></li>

    <li><a href="constAndmuttable.html">const&nbsp;
与 mutable</a></li>

    <li><a href="friendFunctionClass.html">friend
函式、friend 类别</a></li>

    <li><a href="ObjectPointer.html">物件指标</a></li>

    <li><a href="thisPointer.html">this 指标</a></li>

    <li><a href="staticMember.html">static 成员</a></li>

  </ul>

  <li>封装的进阶议题</li>

</ul>

<div style="margin-left: 40px;">&nbsp; &nbsp;
&nbsp; &nbsp;
一些有关于指标、运算子重载、特殊型态类别的相关议题。</div>

<ul>

  <ul>

    <li><a href="NestedClasses.html">巢状类别(Nested
classes)</a></li>

    <li><a href="LocalClasses.html">区域类别(Local
classes)</a> </li>

    <li><a href="MemberFunctionPtr.html">成员函式指标
(Pointer to member
function)</a></li>

    <li><a href="PointerToStaticMember.html">静态类别成员指标
(Pointer to static
class member)</a></li>

    <li><a href="OverloadOperator.html">重载运算子</a></li>

    <li><a href="friendOverLoadOperator.html">使用
friend 函式重载运算子</a></li>

    <li><a href="CopyConstructorAndAssign.html">复制建构函
式、物件的指定</a></li>

    <li><a href="UserDefinedConversions.html">使用者自订型态
转换(User-Defined Conversions)</a></li>

    <li><a href="enumType.html">列举(Enumeration)</a></li>

    <li><a href="Union.html">Union</a></li>

    <li><a href="BitField.html">位元栏位(Bit-field)</a></li>

  </ul>

</ul>

<br>

<dl>

  <dt>物件导向</dt>

  <dd>以物件为基础作延伸,多型(Polymorphism)操作为设计时的核心,于执行时期动态系结(Dynamic
binding)以决定物件的行为。</dd>

</dl>

<ul>

  <li>继承(Inheritance)</li>

</ul>

<div style="margin-left: 40px;">&nbsp; &nbsp;
&nbsp; &nbsp;
您可以继承某个(父)类别的定义并加以扩充,而制订出一个新的(子)类别定义。</div>

<ul>

  <ul>

    <li><a href="PublicInheritance.html">公开(public)继承</a></li>

    <li><a href="protectedMember.html">受保护的
(protected)成员</a></li>

    <li><a href="OverrideMemberFunction.html">成员函式的重新
定义</a></li>

    <li><a href="ConDesAfterInheritance.html">继承后的建构函
式与解构函式</a></li>

    <li><a href="protectedPrivateInheritance.html">保护
(protected)继承、私用
(private)继承</a></li>

  </ul>

  <li>多型(Polymorphism)</li>

</ul>

<div style="margin-left: 40px;">&nbsp; &nbsp;
&nbsp;
&nbsp;&nbsp;多型操作在物件
导向设计中伴演着极重要的角色,使用的适当与否,足以
影响程式的架构与未来的可维护性。</div>

<ul>

  <ul>

    <li><a href="VirtualFunction.html">虚拟函式(Virtual
function)</a></li>

    <li><a href="PureVirtualFunction.html">纯虚拟函式、抽象类别
(Abstract class)</a></li>

    <li><a href="RTTI.html">执行时期型态资讯(RTTI)</a></li>

    <li><a href="dynamicCast.html">使用 dynamic_cast</a></li>

    <li><a href="MultiInheritance1.html">多重继承(一)</a></li>

    <li><a href="MultiInheritance2.html">多重继承(二)</a></li>

    <li><a href="virtualInheritance.html">虚拟继承
(Virtual Inheritance)</a></li>

  </ul>

</ul>

<dl>

  <br>

  <br>

</dl>

<dl>

  <dt>例外处理(Exception Handling)</dt>

</dl>

&nbsp; &nbsp; &nbsp; &nbsp;
例外(Exception)是程式执行时期可侦测到的异常状况,C++的例外处理包括两部份:例外的丢出(throw)与例外的捕捉(catch)与处
理。<br>

<ul>

  <li><a href="ExceptionHandling.html">简介例外处理</a></li>

  <li><a href="CustomExceptionClass.html">自订例外类别</a></li>

  <li><a href="StandardException.html">标准例外类别</a></li>

  <li><a href="ExceptionSpecifications.html">例外规格
(Exception Specifications)</a></li>

</ul>

<dl>

  <br>

  <br>

</dl>

<dl>

  <dt>范本(Template)、名称空间(Namespace)</dt>

</dl>

&nbsp; &nbsp; &nbsp; &nbsp;
范本(Template)提供被参数化的型态(Parameterized
Types)功能,将型态相依与非型态相依的演算法分离开来;名称空间则提供一个名称管理容器,减低名称冲突的机会发生。
<ul>

  <li><a href="FunctionTemplate.html">函式
范本(Function template)</a></li>

  <li><a href="ClassTemplate.html">类别
范本(Class template)</a></li>

  <li><a href="Namespace.html">名称空间(Namespace)</a><br>

  </li>

</ul>

<dl>

  <br>

</dl>

<dl>

  <br>

</dl>

<dl>

  <dt>附录</dt>

</dl>

<ul>

  <li><a href="CppFatherLetter.html">C++爸爸(Bjarne
Stroustrup)给C++初学者的信</a></li>

  <li><a href="http://www.cppreference.com/">C/C++的标准
函式库查询</a></li>

</ul>

<ul>

  <li><a href="http://www.cplusplus.com/doc/tutorial/">Complete
C++
language tutorial</a></li>

</ul>

<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-143766-1";
urchinTracker();
</script>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -