﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-mcdba</title><link>http://www.blogjava.net/tbg1986/</link><description /><language>zh-cn</language><lastBuildDate>Sun, 12 Apr 2026 06:09:48 GMT</lastBuildDate><pubDate>Sun, 12 Apr 2026 06:09:48 GMT</pubDate><ttl>60</ttl><item><title>修饰符的位置</title><link>http://www.blogjava.net/tbg1986/archive/2008/08/05/220185.html</link><dc:creator>清流琴音</dc:creator><author>清流琴音</author><pubDate>Tue, 05 Aug 2008 07:24:00 GMT</pubDate><guid>http://www.blogjava.net/tbg1986/archive/2008/08/05/220185.html</guid><wfw:comment>http://www.blogjava.net/tbg1986/comments/220185.html</wfw:comment><comments>http://www.blogjava.net/tbg1986/archive/2008/08/05/220185.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/tbg1986/comments/commentRss/220185.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tbg1986/services/trackbacks/220185.html</trackback:ping><description><![CDATA[规则：<br />
应该将修饰符*&nbsp; 和 &amp;紧靠变量名。例如：int&nbsp; *a;&nbsp; int &amp;a;<br />
类的版式：<br />
类可以将数据和函数封装起来，其中函数是表示类的行为。也可以称为是服务。类提供了关键字public ,protect ,private用于声明哪些是公共的，哪些是保护的，哪些是 私有的。这样可以让类隐藏必要的东西。<br />
类的版式主要有两种版式:<br />
&nbsp;(1):第一种将privte类型的数据 写在前面，将public类型的数据写在后面。采用这种版式的程序员主张&#8220;以数据为中心，&#8221;重点关注类的结构。<br />
&nbsp;(2):第二种版式是将public类型写在前面。将private写在后面。这种版式的程序员主张&#8220;以行为为中心&#8221;。重点关注的是类应该提供什么样的接口（或者服务）。<br />
我建议大家采用&#8220;以行为为中心的&#8221;的这种类的 版式。因为这样设计类的时候。首先考虑的类可以提供什么洋的服务。而且方便用户阅读。<br />
<br />
 <img src ="http://www.blogjava.net/tbg1986/aggbug/220185.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tbg1986/" target="_blank">清流琴音</a> 2008-08-05 15:24 <a href="http://www.blogjava.net/tbg1986/archive/2008/08/05/220185.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>程序的版式</title><link>http://www.blogjava.net/tbg1986/archive/2008/08/01/219360.html</link><dc:creator>清流琴音</dc:creator><author>清流琴音</author><pubDate>Fri, 01 Aug 2008 07:32:00 GMT</pubDate><guid>http://www.blogjava.net/tbg1986/archive/2008/08/01/219360.html</guid><wfw:comment>http://www.blogjava.net/tbg1986/comments/219360.html</wfw:comment><comments>http://www.blogjava.net/tbg1986/archive/2008/08/01/219360.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tbg1986/comments/commentRss/219360.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tbg1986/services/trackbacks/219360.html</trackback:ping><description><![CDATA[空行：<br />
空行起着分隔程序段落的作用。<br />
(1):在给个类的声明之后，函数的定义之后，都要加上空行。<br />
(2):在一个函数体内，逻辑关系密切的相关语句之间不可以加上空行。<br />
代码行：<br />
(1):一行代码指做一件事情。例如:只声明一个变量。<br />
(2)；if ,for while,do等语句自占一行。执行语句不能紧跟其后。<br />
建议：在定义变量的同时。初始化该变量。<br />
如果变量的引用和定义的地方比较远，那么很容易就会忘记了变量的初始化。如果引用了一个没有初始化的变量，那么很有可能就会引起错误。<br />
代码行内的空格：<br />
(1)；关键字之后要有空格。向const ,virtual,case等关键字后面至少要留一个空格。否则的话，无法辨认关键字。象if.while, for等关键字后面紧跟一个空格在跟&#8220;（&#8221;以显示关键字的。<br />
(2):函数名之后不要留空格，紧跟&#8220;（&#8221;以和关键字区别。<br />
对齐：<br />
程序的分界符&#8220;{&#8221;和"}"应该独占一行并且位于一列。<br />
<br />
<img src ="http://www.blogjava.net/tbg1986/aggbug/219360.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tbg1986/" target="_blank">清流琴音</a> 2008-08-01 15:32 <a href="http://www.blogjava.net/tbg1986/archive/2008/08/01/219360.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>文件的结构</title><link>http://www.blogjava.net/tbg1986/archive/2008/08/01/219349.html</link><dc:creator>清流琴音</dc:creator><author>清流琴音</author><pubDate>Fri, 01 Aug 2008 07:13:00 GMT</pubDate><guid>http://www.blogjava.net/tbg1986/archive/2008/08/01/219349.html</guid><wfw:comment>http://www.blogjava.net/tbg1986/comments/219349.html</wfw:comment><comments>http://www.blogjava.net/tbg1986/archive/2008/08/01/219349.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tbg1986/comments/commentRss/219349.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tbg1986/services/trackbacks/219349.html</trackback:ping><description><![CDATA[头文件由三部分组成：<br />
1：头文件开头出的版本和版权的 声明。<br />
2：预处理块。<br />
3：函数和类的结构声明等。<br />
规则：<br />
(1): 为了防止头文件被重复的引用，应该使用#ifndef/define/endif结构产生与处理模块。<br />
(2):用#include&lt;filename.h&gt;来引用标准库的头文件（编译器将从标准库目录开始搜索）。<br />
(3):用#include"filename.h"来引用非标准库的头文件（编译器将从用户工作的目录开始搜索）<br />
建议：头文件中一般只存放&#8220;声明&#8221;，而不存放&#8220;定义&#8221;<br />
<br />
定义文件的结构：<br />
<br />
定义文件的 内容有由三部分组成：<br />
(1):&nbsp; 定义文件开头处的版本和版权；<br />
(2):对一些头文件的引用；<br />
(3):程序的实现体（包括数据和代码）<br />
<br />
头文件的作用：<br />
(1):通过头文件来调用库功能。在很多场合源代码不能（或者不准）提供给用户。只提供给用头文件或者二进制的库。用户只需要按照头文件中的接口的声明来调用库功能。而不必关心接口是如何实现的。编译器会从库中提取相应的代码。<br />
(2): 头文件可以用来加强类型安全检查。如果某个接口被实现或者被实用的时候，其方式和在头文件中的声明不一致的时候，编译器就会报错。这一简单的规则可以大大的减轻程序员调试和改错的负担。<br />
目录结构：<br />
如果一个软件的头文件比较多（超过10个），就应该把头文件和定义文件分开。分别保存在不同的目录之中。以便于维护。<br />
例如：可以将头文件保存在inluude目录之中。将定义文件保存在source文件之中。<br />
如果某些头文件是私有的，不会被程序直接引用，为了加强信息隐藏。那么可以把这些头文件和定义文件放在同一目录之中。<br />
<img src ="http://www.blogjava.net/tbg1986/aggbug/219349.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tbg1986/" target="_blank">清流琴音</a> 2008-08-01 15:13 <a href="http://www.blogjava.net/tbg1986/archive/2008/08/01/219349.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>指针类型</title><link>http://www.blogjava.net/tbg1986/archive/2008/07/08/213329.html</link><dc:creator>清流琴音</dc:creator><author>清流琴音</author><pubDate>Tue, 08 Jul 2008 06:43:00 GMT</pubDate><guid>http://www.blogjava.net/tbg1986/archive/2008/07/08/213329.html</guid><wfw:comment>http://www.blogjava.net/tbg1986/comments/213329.html</wfw:comment><comments>http://www.blogjava.net/tbg1986/archive/2008/07/08/213329.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tbg1986/comments/commentRss/213329.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tbg1986/services/trackbacks/213329.html</trackback:ping><description><![CDATA[指针中存有另一个对象的地址，使我们可以间接的操作这个对象。<br />
指针的典型用法是构建一个连接的数据结构，例如：链表(list)和数(tree)。并管理在程序运行的过程中动态分配的对象。以及作为函数参数类型。主要用来传递数组和大型类的对象。<br />
每个指针都有相关的类型。<br />
不同数据类型的指针之间的区别不在于指针的表示上，也不是指针所持有的值（地址）。——对于所有类型的指针这两个方面都是一样的。不同之处在于指针所指的对象的类型上。针织类型可以指定编译器咋样解释特定内存上的指定的内容，以及该内存区域因该跨越多少内存单元。<br />
<img src ="http://www.blogjava.net/tbg1986/aggbug/213329.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tbg1986/" target="_blank">清流琴音</a> 2008-07-08 14:43 <a href="http://www.blogjava.net/tbg1986/archive/2008/07/08/213329.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>变量名</title><link>http://www.blogjava.net/tbg1986/archive/2008/07/08/213328.html</link><dc:creator>清流琴音</dc:creator><author>清流琴音</author><pubDate>Tue, 08 Jul 2008 06:26:00 GMT</pubDate><guid>http://www.blogjava.net/tbg1986/archive/2008/07/08/213328.html</guid><wfw:comment>http://www.blogjava.net/tbg1986/comments/213328.html</wfw:comment><comments>http://www.blogjava.net/tbg1986/archive/2008/07/08/213328.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tbg1986/comments/commentRss/213328.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tbg1986/services/trackbacks/213328.html</trackback:ping><description><![CDATA[变量名，即变量的标识符，可以由字符，数字，以及下划线来组成。他必须以字符或者下划线来开头，并且区分大小写。<br />
语言本身没有对变量名做什么限制。但是为了用户着想，他不应过长。<br />
c++保留了一些词用作关键字。关键字标识符不能在作为标识符在程序中使用了。<br />
对于命名对象有很多已经普遍接受的习惯。主要考虑的因素的是程序的可读性。<br />
第一：对象的命名一般用小写。<br />
第二：标识符通常用容易记忆的名字。<br />
第三：对于多词构成的标识符一般在词的中间加上下划线。<br />
对象的定义：<br />
一个简单的对象的定义由一个类型指示符后面加上一个名字构成，以分号结束。<br />
例如： int aaaaa;<br />
当同类型的多个标识符被定义的时候，我们可以在类型指示符后面用逗号隔开。<br />
一个简单的定义指定了变量的类型和标识符。他并不提供初始值。<br />
如果一个变量是在全局域（globe scope）中定义的,那么系统会保证给他一个初始值0。如果一个变量是在一个局部域中定义的，或者通过一个new 动态分配的，那么系统不会向它提供初始值0。这些对象被称为未初始化（uninitialized）,未初始化的对象不是没有值，而是对象的值未被定义。<br />
因为使用未初始化的对象是个很常见的&nbsp; 错误，并且很难被发现。所以建议为每个定义的对象进行初始化。<br />
类机制通过缺省构造函数提供了类对象的自动初始化。<br />
例如：<br />
int&nbsp; main()<br />
{<br />
int val；////////未被初始化的值。<br />
string&nbsp; project；//////通过string类的缺省的构造函数进行了初始化。<br />
}<br />
<br />
<br />
val是一个未被初始化的局部变量。<br />
但是project是一个已经被初始化的类对象——被string类缺省的构造函数自动初始化。<br />
初始化一个值可以在对象定义的时候进行。<br />
c++支持两种形式的初始化。<br />
第一种是使用赋值符号的现实的操作。<br />
如：<br />
int val=111;<br />
string&nbsp; project="ssssss";<br />
隐式形式中，初始化值被放在括号中。<br />
int val(111);<br />
string project("sssssss");<br />
在对象的定义之中，当对象的标识符在定义中出现后，对象名马上就是可见的了。因此用对象初始化他自己是合法的，只是这样做不是明智的。<br />
例如：int val=val;///////合法，但是不是明智的。<br />
另外，每种内置数据类型都支持一种特殊的构造函数。可将对象初始化为0。<br />
/////设置val为0。设置dval为0.0。 <br />
int val =int();<br />
double dval=double();<br />
下列的定义中：<br />
int()<br />
vector &lt;int&gt;ival(10);<br />
函数int()自动被应用到ival包含的10个元素上。<br />
对象可以用任意复杂的表达式来初始化，也可以用返回值
<img src ="http://www.blogjava.net/tbg1986/aggbug/213328.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tbg1986/" target="_blank">清流琴音</a> 2008-07-08 14:26 <a href="http://www.blogjava.net/tbg1986/archive/2008/07/08/213328.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>变量</title><link>http://www.blogjava.net/tbg1986/archive/2008/07/08/213256.html</link><dc:creator>清流琴音</dc:creator><author>清流琴音</author><pubDate>Tue, 08 Jul 2008 02:49:00 GMT</pubDate><guid>http://www.blogjava.net/tbg1986/archive/2008/07/08/213256.html</guid><wfw:comment>http://www.blogjava.net/tbg1986/comments/213256.html</wfw:comment><comments>http://www.blogjava.net/tbg1986/archive/2008/07/08/213256.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tbg1986/comments/commentRss/213256.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tbg1986/services/trackbacks/213256.html</trackback:ping><description><![CDATA[变量为我们提供了一个有名字的内存存贮空间。可以通过程序对其进行 读写，处理操作。<br />
c++中给个符号变量都有一个符号类型与之对应。这个类型决定了相关内存的大小，类型，布局，能够存贮在该内存值的范围。以及可以以用到其上的操作集。我们也可以把变量说成是对象（object）<br />
。<br />
变量和文字常量都有存贮区，并且都有相关的类型。区别在于变量是可以寻址的（adressable）常量文字是不可以寻址的（nonadressable）,每一个变量都有两个值与之联系着，<br />
1：数据值。存贮在内存的某个存贮区之中。有时候这个数据值也被称为是右值（rvalue）.我们可以认为右值是被读取的值。文字常量和变量都可以被用来做右值。<br />
2：它的地址值。即存贮它数据值的那块内存的地址。它有时候被称为左值（lvalue）。我们也可以认为左值的意思是位置值。文字常量不能被用作左值。<br />
变量的定义会引起相关内存的分配。因为一个对象只能有一个存贮位置，所以一个对象只能被定义一次。如果在一个文件中定义的对象需要在另一个文件中被访问，那么就会出现问题。<br />
在c++中，对象在使用之前必须知道对象，引用一个未知的对象会引起编译器的错误。<br />
如果一个对象在另一个&nbsp; 文件中声明着，我们想在这个文件中来使用这个对象，但是又不能在这个文件中在声明相同的对象。那么我们可以使用extern关键字来声明这个对象。<br />
例如; file module.c<br />
&nbsp;string aaaaa;<br />
///定义了对象aaaaa<br />
<br />
<br />
<br />
file&nbsp; module1.c<br />
////需要使用对象aaaaa.，<br />
////声明对象aaaaa，使程序知道它。但是又不能引入第二个定义。<br />
extern string aaaaa;<br />
对象声明是使程序知道对象的类型和名字。它由关键字extern后面跟对象的类型和对象的名字构成。<br />
声明不是定义，不会引起内存的分配。实际上它只是说明了在程序之外的某处有这个变量的定义。<br />
虽然一个程序中只能包含一个对象的定义，但是可以包含很多的对象声明。<br />
比较好的做法是:&nbsp;&nbsp; 不是在每个要使用的文件中都单独提供一个声明。而是在在头文件中声明这个对象，然后在需要声明这个对象的时候包含这个头文件就好了。按照这个做法。如果需要修改对象的声明只需要修改一次。就能维持多个使用这个对象的声明文件的一致性。<br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/tbg1986/aggbug/213256.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tbg1986/" target="_blank">清流琴音</a> 2008-07-08 10:49 <a href="http://www.blogjava.net/tbg1986/archive/2008/07/08/213256.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>面向对象的程序设计</title><link>http://www.blogjava.net/tbg1986/archive/2008/07/07/212970.html</link><dc:creator>清流琴音</dc:creator><author>清流琴音</author><pubDate>Mon, 07 Jul 2008 02:33:00 GMT</pubDate><guid>http://www.blogjava.net/tbg1986/archive/2008/07/07/212970.html</guid><wfw:comment>http://www.blogjava.net/tbg1986/comments/212970.html</wfw:comment><comments>http://www.blogjava.net/tbg1986/archive/2008/07/07/212970.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tbg1986/comments/commentRss/212970.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tbg1986/services/trackbacks/212970.html</trackback:ping><description><![CDATA[<p>面相对象的程序设计扩展了给予对象的程序设计。可以提供类型和子类型的关系。这个是通过一种称作继承（inheritance）的机制来实现的。</p>
<img src ="http://www.blogjava.net/tbg1986/aggbug/212970.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tbg1986/" target="_blank">清流琴音</a> 2008-07-07 10:33 <a href="http://www.blogjava.net/tbg1986/archive/2008/07/07/212970.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>c++的數據結構</title><link>http://www.blogjava.net/tbg1986/archive/2008/07/04/212620.html</link><dc:creator>清流琴音</dc:creator><author>清流琴音</author><pubDate>Fri, 04 Jul 2008 07:35:00 GMT</pubDate><guid>http://www.blogjava.net/tbg1986/archive/2008/07/04/212620.html</guid><wfw:comment>http://www.blogjava.net/tbg1986/comments/212620.html</wfw:comment><comments>http://www.blogjava.net/tbg1986/archive/2008/07/04/212620.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tbg1986/comments/commentRss/212620.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tbg1986/services/trackbacks/212620.html</trackback:ping><description><![CDATA[<p>c++預定了一組數值數據類型。可以用來表示整型，浮點型和單個字符。此外還預定了表示字符串的字符數組。<br />
1：字符型char:通常用來表示單個字符和小整數。它可以用一個機器字節來表示（即8位表示）。<br />
2：整型int&nbsp; 短整型short ，長整型long分別表示不同長度的整數值。典型的情況下：short用半個字表示（即16位）。int 用一個字表示（即32位。）long用一個或者兩個字表示。（在32位的機器中通常int 和long的通常長度相同。）<br />
3：浮點型flont ,雙精度double和長雙精度。長雙精度long double 。分別表示單精度浮點數。雙精度浮點數和擴展精度的浮點數。典型的情況下，float用一個字表示。double用兩個字表示，long double用三個或者四個字表示。<br />
char ,int, float , long&nbsp;稱為整值類型（intergral&nbsp; type）。整值類型可以有符號也可以沒有符號。在有符號的類型中。最左邊的位是符號為。余下的位代表數值。。在無符號的類型中，所有的位表示數值位。<br />
如果符號為被設置為1。那么數值被解釋為負數。如果符號為被設置為0。那么數值位被解釋為正數。<br />
一个8位有符号的char 表示-128---127之间的值。而一个无符号的char则表示0--255之间的值。<br />
当一个值。例如1。出现在程序的时候，我们称它为文字常量。称他为&#8220;文字&#8221;是因为我们只能以他的值的形式来指代它。称之为常量是因为它的值不能被改变。每个文字都有相应的类型。文字常量是不可寻址的（nonadressable）。尽管他的值也被存储在机器的某个内存之中。但是我们没有办法来寻找它的地址。<br />
整数文字常量可以被写成十进制。八进制，十六进制的形式。（这不会改变该整数的位序列）。例如：20可以写成以下的方式：<br />
20/////////十进制形式<br />
024/////八进制<br />
0x14////十六进制。<br />
在整型常量前面加上0。该值将被解释成一个八进制数。而在整形常量的前面加上0x，则该值将会被解释成十六进制数。<br />
在缺省的情况下，整形常量被当作一个int的有符号的整数。<br />
我们可以在一个文字常量的后面加上一个&#8220;L&#8221;或者"l"，将其指定为long类型。<br />
类似的，我们在文字常量的后面加上&#8220;u&#8221;或者&#8220;U&#8221;。表示一个无符号的数。<br />
此外，我们还可以指定无符号long类型的数。例如： 1UL.<br />
单词true 和false是bool型的文字常量。<br />
可以打印的文字常量可以用单引号''括起来例如：<br />
'A','S'...等。<br />
不能够直接打印的字符，单引号，双引号，和反斜杠就i可以用转义序列来来表示（转移序列用反斜杠来开头）。<br />
\n 换行符<br />
\t水平制表符<br />
\v垂直制表符<br />
\b退格符<br />
\r回车键<br />
\a响铃建<br />
\\反斜杠键<br />
\?问号<br />
\'单引号<br />
\""双引号<br />
另外字符文字前面可以加上&#8220;L<br />
例如：L'a'<br />
这个称为宽字符文字，类型为wchar_t.宽字符常量用来支持某些语言字符的集合。例如：汉语，日语等<br />
这些语言中的某些字符不能用单个的字符来表示。<br />
字符串常量由零个或者许多个由双引号括起来的 字符<br />
不可以打印的字符由相应的转移序列来表示，而一个字符串文字可以扩展到多行。在一行的最后加上一个\，表示字符串文字在下一行继续。<br />
如："fdfdf fdfdf\dfdfdfsdffdfdfdf"<br />
字符串文字的类型是常量字符数组。字符文字本身和 编译器加上的表示结束的(NULL),字符构成。<br />
例如：'a'表示一个单个的字符a<br />
"a"则表示一个字符a和一个空字符，<br />
空字符是c和c++用来标记字符串结束的符号<br />
正如宽字符文字。L'a'</p>
也有宽字符串文字L"aaaaaaa"<br />
宽字符串文字的类型是常量的宽字符数组。他也有一个等价的宽空字符作为结束的标记。<br />
如果两个字符串和或者宽字符串在程序中相邻。c++就会把它们连接起来。并且在最后加上一个空字符，<br />
例如："one" "two" 则输出的结果为onetwo.<br />
如果把一个字符串常量和一个宽字符串常量链接起来，那么结果会是如何呢？<br />
"aa" L"SSS"<br />
结果是未定义(undefine)------即没有这种这两种不同类型链接标定义行为。<br />
使用未定义的程序被称为是不可以移植的。<br />
虽然程序可以在当前的编译器下可以执行，但是不能保证相同的程序在不同的编译器下，或者在当前的白一起的以后的版本中，还能够正确的编译通过。<br />
在本来可以正常运行的程序中来寻找这些是件很令人心烦的事情，所以我们建议不要使用未定义的程序特征。<br />
<img src ="http://www.blogjava.net/tbg1986/aggbug/212620.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tbg1986/" target="_blank">清流琴音</a> 2008-07-04 15:35 <a href="http://www.blogjava.net/tbg1986/archive/2008/07/04/212620.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>标准数组——向量</title><link>http://www.blogjava.net/tbg1986/archive/2008/06/30/211670.html</link><dc:creator>清流琴音</dc:creator><author>清流琴音</author><pubDate>Mon, 30 Jun 2008 07:18:00 GMT</pubDate><guid>http://www.blogjava.net/tbg1986/archive/2008/06/30/211670.html</guid><wfw:comment>http://www.blogjava.net/tbg1986/comments/211670.html</wfw:comment><comments>http://www.blogjava.net/tbg1986/archive/2008/06/30/211670.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tbg1986/comments/commentRss/211670.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tbg1986/services/trackbacks/211670.html</trackback:ping><description><![CDATA[<p>正如我们看到的，尽管c++的数组支持容器机制。但是它不支持容器抽象的语义。为了在这个层次上编写程序。在标准c++之前。要么我们从某个途径获取这样的类。要么我们自己编写这样的类。<br />
在标准c++中。数组类是c++标准库中的一部分。现在它不叫数组了，而叫向量(vector)、<br />
</p>
当然向量是一个类模板，我们可以这样写：<br />
vector&lt;int&gt; ivec(10);<br />
vector&lt;string&gt;svec(10);<br />
上面的代码分别定义了包含10个整型的对象的向量，和定义了包含10个字符串的对象的向量。<br />
在我们实现的Array类模板和vector类模板的实现中有两个不同的区别;<br />
vector类模板支持&#8220;向现有的数组元素赋值&#8221;的概念以及&#8220;插入附件元素的&#8221;概念---------即vector数组可以在运行时动态的增长。（如果程序员愿意使用这个特征的话。）<br />
第二个区别是 ： 更加广泛。代表了设计方法的重要改变。vector类不是提供一个巨大的&#8220;可以适用于向量&#8221;的操作集。如;store(),min().max()等。而是只是提供一个最小集；如：等于，小于，size(),empty()等操作。而一些通用的操作如：sort(),min().max(),find()。等操作是作为独立的泛型算法（generic algorthem）被提供的。<br />
要定义一个向量我们必须包含相关的头文件。<br />
#include&lt;vector&gt;<br />
下面都是vector对象的合法定义。<br />
vector&lt;int&gt;vecto;///////空的vector<br />
const int size=8;<br />
const int value=1024;<br />
//size为8的vector<br />
///每个元素都被初始化为0<br />
vector&lt;int&gt;vecto(size);<br />
<br />
//size为8的vector<br />
///每个元素都被初始化为1024<br />
vector&lt;int&gt;vecto(size&nbsp;,value);<br />
////vector3的size为8<br />
///vector3的初始化值为ia 的4个值<br />
int ia[4]={0,1,1,2};<br />
vector&lt;int&gt;vector3(ia,ia+4);<br />
<br />
////vector4是vector2的拷贝。<br />
vector&lt;int&gt;vector4(vector2);<br />
既然定义了向量，那么我们就必须遍历里面的元素。<br />
与Array类模板一样。标准的vector类模板也支持使用下面的操作符。<br />
例如：<br />
#include&lt;vector&gt;<br />
extern int getsiz();<br />
void mumble()<br />
{<br />
&nbsp; int size=getsize();<br />
vector&lt;int&gt;vec(size);<br />
for(int i=0;i&lt;=size;i++)<br />
{<br />
&nbsp;vec[i]=i;<br />
/////,.............................<br />
}<br />
}<br />
<img src ="http://www.blogjava.net/tbg1986/aggbug/211670.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tbg1986/" target="_blank">清流琴音</a> 2008-06-30 15:18 <a href="http://www.blogjava.net/tbg1986/archive/2008/06/30/211670.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用其他名字来命名数组</title><link>http://www.blogjava.net/tbg1986/archive/2008/06/30/211616.html</link><dc:creator>清流琴音</dc:creator><author>清流琴音</author><pubDate>Mon, 30 Jun 2008 03:15:00 GMT</pubDate><guid>http://www.blogjava.net/tbg1986/archive/2008/06/30/211616.html</guid><wfw:comment>http://www.blogjava.net/tbg1986/comments/211616.html</wfw:comment><comments>http://www.blogjava.net/tbg1986/archive/2008/06/30/211616.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tbg1986/comments/commentRss/211616.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tbg1986/services/trackbacks/211616.html</trackback:ping><description><![CDATA[<p>名字空间允许我们封装名字，否则的话，这些名字就有可能污染到全局的名字空间（pollute teh global namespce）.一般来说，只有我们希望我们的代码被外部软件开发部门使用的时候。才会用到名字空间。<br />
例如;我们可以这样来封装Array类，<br />
namespace cplacple_primer_3E<br />
{<br />
&nbsp;template &lt;calss eyemly&gt;<br />
&nbsp;calss Array{,,,,,,,,,};<br />
////////////////////////<br />
<br />
}<br />
namespce后面的名字标明了一个名字空间。它独立于全局名字空间。我们可以在里面放一些希望声明在函数和类之外的实体。名字空间并不改变他们的声明意义。只是改变了它们的可视性。如果名字空间中的声明对于程序来说不是立即可见的。那么我们杂样来访问他们呢？我们就要用到限定修饰名字符.<br />
格式如下：<br />
namespce_idenerfier::entrityname<br />
名字空间别名（namespce alias）允许用一个可替代的，短的，或者跟一般的名字来和名字空间来关联起来。<br />
例如：<br />
//提供一个更一般化的名字<br />
namespce lib=cplacple_primer_3E<br />
然后这个名字就会称为原始名字空间的同义词。<br />
#include "cplacple.h"<br />
int main()<br />
{<br />
&nbsp;lib::Array{...........}<br />
<br />
&nbsp;}<br />
别名也可以 用来封装正在使用的实际的名字空间。在这种情况下，我们可以通过改变别名的名字空间。<br />
来改变所使用的声明集。而无需改变&#8220;通过别名来访问这些声明&#8221;。的实际代码。<br />
using 指示符使名字空间中的所有的声明都是可见得。这样这些声明可以不加任何的限定的使用。<br />
using和namespce都是关键字。被引用的名字空间必须已经被声明了。否则的话，会引起编译的错误。<br />
<br />
using 声明提供了更为精细的名字可视化机制。它允许使名字空间中的单个的声明可见。<br />
例如：<br />
#include"IBM_Canada_Labaraory.h"<br />
using&nbsp; namespace IBM_Canada_Labaraory<span style="font-size: 18pt; color: #000000">::</span>Matriy<br />
int main()<br />
{<br />
&nbsp;//ok; IBM_Canada_Labaraory<span style="font-size: 18pt; color: #000000">::</span>Matriy<br />
<br />
Matriy met(4,5);<br />
//fail,错误。IBM_Canada_Labaraory<span style="font-size: 18pt; color: #000000">::<font size="3">Array不可见<br />
</font></span><font size="3">Array</font> array(4,5);<br />
}<br />
为了防止标准的c++库组件污染用户定义的名字空间。所有的c++库组件都声明在一个称为std的名字空间中。<br />
所以即使我们在我们的文本文件中已经包含了c++库头文件，头文件中声明的内容在我们的文本文件中也是不可见的。<br />
例如：<br />
在c++中下面的代码是不能被编译通过的。<br />
#include&lt;string&gt;<br />
///错误。string 是不可见的<br />
string&nbsp; current_string="asdf dfdff";<br />
在string 头文件中所有的声明都包含在std名字空间中。<br />
我们可以用&#8220;#include 指示符后面加上using 的办法使在&lt;string&gt;中的，在std中声明的组件，对于我们的文本文件是可见得。<br />
例如：<br />
#include&lt;string&gt;<br />
&nbsp;using namespace std<br />
int main()<br />
{<br />
&nbsp;//////////正确。string 是可见的。<br />
&nbsp; string current_string="asd fdfdf"<br />
}<br />
为了使在std中，声明的组件和名字在我们的文本文件中可见。using指示符通常被看作是一种比较差的选择方案。<br />
在上面的例子中。指示符using ，使在string头文件中声明的，并且在std名字空间中的&nbsp; 组件在我们的文本文件中都是可见的。这又将全局名字空间污染问题带回来了。而这个问题就是std名字空间首先要努力避免的。<br />
它增加了&#8220;c++标准库组件的名字&#8221;与&#8220;我们程序中声明的全局名字&#8221;冲突的机会。<br />
现在有两种机制可以替代using指示符。来引用隐藏在std名字空间中的名字string. <br />
第一种方法：<br />
&nbsp;可以使用限定的名字。<br />
&nbsp; #include&lt;string&gt;<br />
/////正确。使用限定的名字<br />
&nbsp;&nbsp; std:: string current_string="afdfdfsdfs";<br />
第二种方法：<br />
&nbsp;如下使用using 声明；<br />
#include&lt;string&gt;<br />
&nbsp;using std::string;<br />
&nbsp;/////ok.上面的using声明使string可见。<br />
&nbsp;string=&#8220;dfdfdfafsdf&#8221;;<br />
为了使用名字空间中的声明的名字。最好使用带有精细选择功能的 using声明替代using 指示符。<br />
</p>
<img src ="http://www.blogjava.net/tbg1986/aggbug/211616.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tbg1986/" target="_blank">清流琴音</a> 2008-06-30 11:15 <a href="http://www.blogjava.net/tbg1986/archive/2008/06/30/211616.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>