青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

杰 & C++ & Python & DM

2012年9月6日

命令行下Java的編譯及運(yùn)行(2)


  上篇博文中說明了如何通過命令編譯及運(yùn)行自己的Java文件。但是當(dāng)前都是以項(xiàng)目為單位的,如何組織項(xiàng)目中的文件以及對(duì)項(xiàng)目的編譯運(yùn)行,是命令行編譯主要解決的問題。

  1. 項(xiàng)目組織
  我們以下面的項(xiàng)目作為樣例來說明:
Test/
|-- Test.jar
|-- classes
|   |-- Main.class
|   |-- OutterTest.class
|   `-- inner
|       `-- InnerTest.class
|-- run.py
|-- run.sh
`
-- src
    
|-- Main.java
    
|-- OutterTest.java
    `
-- inner
        `
-- InnerTest.java

  上面是一個(gè)項(xiàng)目:Test。其中,有兩個(gè)文件夾,src用來放置所有的源代碼,也就是.java文件;classes用來放置相應(yīng)的.class文件。Test.jar是最終生成的jar文件,run.py和run.sh是項(xiàng)目的腳本文件。下面列出三個(gè).java文件,只是簡單的顯示一句話:
// Main.java
import inner.*;
public class Main
{
    
public static void main(String[] args)
    {
        System.out.println(
"main: hello word!");

        OutterTest out1 
= new OutterTest();
        out1.hello();

        InnerTest in1 
= new InnerTest();
        in1.hello();
    }
}

// OutterTest.java
public class OutterTest
{
        
public void hello()
        {
                System.out.println(
"Hello OutterTest!");
        }
}

// InnerTest.java
package inner;
public class InnerTest
{
        
public void hello()
        {
                System.out.println(
"Hello InnerTest!");
        }
}

  注意上面的InnerTest類,它在package inner中,所以將InnerTest.java放在inner文件夾下,這樣可以保證統(tǒng)一。在Eclipse中,新建一個(gè)類時(shí),會(huì)讓你填寫package名,然后Eclipse會(huì)為你新新建一個(gè)相應(yīng)的文件夾。

  2. 項(xiàng)目編譯
  
  javac -d classes src/*.java src/inner/*.java
  
  由上一篇知道,javac中-d表示”指定存放生成的類文件的位置“,也就是將生成的.class文件放在-d指定的文件夾中。需要指出的是,classes文件夾是手動(dòng)建立的。
  另外,javac還可以批量編譯.java文件,上面的命令表示編譯src目錄下的所以.java文件、編譯src/inner目錄下的所有.java文件。這樣就可以批量編譯.java文件,并將生成的.class文件放在classes文件夾中。這里同樣要指出一點(diǎn),因?yàn)閜ackage inner的關(guān)系,會(huì)自動(dòng)建立inner文件夾,并將所有package inner下的類文件.class放在classes/inner下。

  3.項(xiàng)目打包
  
  jar -cvf Test.jar -C classes/ .

  這個(gè)命令將會(huì)把classes下的所有文件(包括.class和文件夾等)打包為Test.jar文件。
  上篇博客中,介紹了參數(shù)-C的意義:-C  更改為指定的目錄并包含其中的文件,如果有任何目錄文件, 則對(duì)其進(jìn)行遞歸處理。它相當(dāng)于使用 cd 命令轉(zhuǎn)指定目錄下。
  注意后面的"."的用法,jar可以遞歸的打包文件夾,"."表示是當(dāng)前文件夾。如果執(zhí)行命令“jar -cvf Test.jar .”,表示將當(dāng)前目錄下的所有文件及文件夾打包。所以上面的命令的意思就是“將classes下的所有文件打包為Test.jar”。

  4.項(xiàng)目運(yùn)行
  
  java -cp Test.jar Main

  通過上面的命令就可以執(zhí)行Test.jar中的Main.class。其中,cp指定了jar文件的位置。

  5. 腳本文件
  通過上面的幾步,我們就可以完成整個(gè)項(xiàng)目的編譯和運(yùn)行。而且,通過src和classes兩個(gè)文件夾將源文件和目標(biāo)文件分開,使項(xiàng)目比較整潔。但是如果每次編譯、運(yùn)行都要輸入上面一系列命令,還是比較繁瑣的,尤其當(dāng)項(xiàng)目文件較多時(shí),這時(shí)通過腳本文件管理整個(gè)項(xiàng)目是明智的選擇。
  下面是項(xiàng)目的腳本文件run.py
import os
import sys

if __name__ == "__main__":

        ProjectJar 
= "Test.jar"

        
if sys.argv[1== "c":
                
print("Compile program.")

                src 
= "src/*.java src/inner/*.java"
                os.system(
"javac -d classes " + src)
                os.system(
"jar -cvf " + ProjectJar + " -C classes/ .")

        
if sys.argv[1== "r":
                
print("Run program.")
                os.system(
"java -cp " + ProjectJar + " Main")

        
print("Over!")

  通過這個(gè)腳本文件,可以使用"python run.py c"完成項(xiàng)目的編譯、打包;使用"python run.py r"運(yùn)行項(xiàng)目。

  通過這篇文章,我們已經(jīng)了解了Java項(xiàng)目的管理方法,以及編譯、打包、運(yùn)行的命令行,最后介紹了使用腳本文件有效管理項(xiàng)目。
  附件中包含整個(gè)項(xiàng)目,同時(shí)還包括一個(gè)run.sh,方便不熟悉python的人查看。
  附件: Test.tar

posted @ 2012-09-06 18:56 jaysoon 閱讀(3371) | 評(píng)論 (0)編輯 收藏

2012年8月22日

命令行下Java的編譯及運(yùn)行(1)


  當(dāng)前大部分開發(fā)者在開發(fā)Java程序時(shí)使用Eclipse,它可以方便的進(jìn)行程序的編譯、打包和運(yùn)行。但是不使用IDE,在完全的命令行下進(jìn)行Java開發(fā)者從未用過的。在命令行下進(jìn)行開發(fā)不是用來在展現(xiàn)自己有多牛,而是通過命令行開發(fā),可以對(duì)Java的編譯、jar包等各個(gè)部分有一個(gè)深入了解。
  下面的幾篇博客將會(huì)對(duì)Java的編譯、打包和運(yùn)行方法由淺入深的進(jìn)行介紹。
  在這里使用的操作系統(tǒng)是Linux,并提供相應(yīng)的shell和python腳本。

  首先介紹一下三個(gè)常用的命令:javac、jar、java。每個(gè)命令都有不同的參數(shù),這些參數(shù)的用法會(huì)詳細(xì)介紹。

  1. javac
  javac的功能是對(duì)java源代碼進(jìn)行編譯,將后綴為.java的文件編譯為.class的文件。javac的一般格式是
  javac <選項(xiàng)> <源文件>
  例如:
  javac Main.java
  會(huì)產(chǎn)生Main.class文件。
  
  javac的常用選項(xiàng)有:
  -classpath <路徑>      指定查找用戶類文件的位置
  -cp <路徑>                指定查找用戶類文件的位置(與上面的選項(xiàng)一樣,cp是classpath的簡寫)
  -d <目錄>                指定存放生成的類文件的位置

  2.jar
  jar的功能是根據(jù)選項(xiàng)將指定的一些.class文件打包為一個(gè)jar包。jar的一般格式是
  jar {ctxui}[vfm0Me] [jar-文件] [manifest-文件] [-C 目錄] 文件名 ...
  例如,
  jar cvf Test.jar Main.class Bar.class
  它將Main.class和Bar.class打包為一個(gè)文件Test.jar。

  jar命令的選項(xiàng)比較多,用到選項(xiàng)包括:
  -c  創(chuàng)建新的歸檔文件
  -t  列出歸檔目錄
  -x  從檔案中提取指定的 (或所有) 文件
  -u  更新現(xiàn)有的歸檔文件
  -v  在標(biāo)準(zhǔn)輸出中生成詳細(xì)輸出
  -f  指定歸檔文件名
  -m  包含指定清單文件中的清單信息
  -e  為捆綁到可執(zhí)行 jar 文件的獨(dú)立應(yīng)用程序,指定應(yīng)用程序入口點(diǎn)
  -C  更改為指定的目錄并包含其中的文件,如果有任何目錄文件, 則對(duì)其進(jìn)行遞歸處理。

  例如,
  上例中的cvf參數(shù),分別表示創(chuàng)建新的jar文件、創(chuàng)建時(shí)顯示jar包的信息(可以執(zhí)行看一下)、指定jar包名為Test.jar。
  jar tf Test.jar      查看Test.jar的內(nèi)容,其中t表示列出jar包內(nèi)容,f指定jar包名
  jar xf Test.jar      解壓Test.jar文件
  jar xf Test.jar Main.class      僅解壓Test.jar中的Main.class文件
  這里要指出的是,f/m/e都指定一個(gè)名稱(jar包名, 清單文件名和入口點(diǎn)名稱),相應(yīng)的名稱順序與參數(shù)的順序要一致。

  3.java
  java的功能是執(zhí)行應(yīng)用程序。java的一般格式是
  執(zhí)行一個(gè)類:    java [ options ] class [ argument ... ]
  執(zhí)行一個(gè)jar包:java [ options ] -jar file.jar [ argument ... ]
  例如:
  java Main
  執(zhí)行Main.class,注意上面沒有.class后綴
  java Test.jar
  執(zhí)行一個(gè)jar包,這個(gè)jar包中要指定了程序入口點(diǎn)(通過在MANIFEST.MF文件中指定)。

  常用的java的選項(xiàng):
  -classpath<類搜索路徑>    指定用戶類文件的位置,可能為文件夾、zip、jar文件


  總結(jié)
  通過這篇內(nèi)容,我們應(yīng)用學(xué)會(huì)了如何使用javac編譯自己的類,并使用java執(zhí)行自己的類。但是關(guān)于打包的操作及jar的執(zhí)行比較復(fù)雜,將在以后繼續(xù)介紹。


  

posted @ 2012-08-22 15:45 jaysoon 閱讀(637) | 評(píng)論 (0)編輯 收藏

2012年8月17日

Java中計(jì)算中文的MD5值

Java中計(jì)算中文的MD5值
  前幾天的工作中,需要計(jì)算中文的MD5值,計(jì)算的函數(shù)接口及調(diào)用方式如下:
public static String getMD5(byte[] source);
String s 
= "中文編碼";
String md5_value 
= getMD5(s.getBytes());
  其中g(shù)etBytes函數(shù)使用平臺(tái)默認(rèn)的字符集將string編碼為byte序列。由于平臺(tái)的中文編碼方式可能不同,所以同一中文經(jīng)過getBytes得到的二進(jìn)制是不一樣的。為保證每次得到的結(jié)果一致,或者使用指定的編碼方式得到byte序列,應(yīng)該在getBytes中使用參數(shù)。
String md5_value = getMD5(s.getBytes("utf-8"));
  這樣得到的值就是一樣的。

posted @ 2012-08-17 15:32 jaysoon 閱讀(1329) | 評(píng)論 (1)編輯 收藏

2012年5月14日

遇到j(luò)ava與crontab問題


  crontab命令是Unix/Linux中的一個(gè)常用命令,用于設(shè)置周期性被執(zhí)行的指令。沒有用過的可以查一下,在運(yùn)行服務(wù)端程序時(shí)會(huì)經(jīng)常用到。

  程序使用Java讀取一個(gè)含有中文的文件,進(jìn)行處理后,將結(jié)果寫到一個(gè)結(jié)果文件中。在運(yùn)行的程序時(shí),出現(xiàn)了這樣一個(gè)問題:在本地環(huán)境下,運(yùn)行正確;但是當(dāng)使用crontab定時(shí)執(zhí)行時(shí),得到的卻是錯(cuò)誤的結(jié)果。

  經(jīng)過一定的調(diào)研發(fā)現(xiàn)原來是對(duì)crontab的機(jī)制沒有弄明白導(dǎo)致的。crontab運(yùn)行程序時(shí),會(huì)使用它自己的環(huán)境變量,這個(gè)環(huán)境變量與你本地的環(huán)境變量可能會(huì)不同。比如,在你本地情況下,環(huán)境變量的語言為en_US.UTF-8,而在crontab中,環(huán)境變量可能是zh_CN.GBK,這樣會(huì)導(dǎo)致讀寫文件時(shí)——尤其是讀寫中文文件時(shí)內(nèi)容編碼錯(cuò)誤,進(jìn)而導(dǎo)致結(jié)果出錯(cuò)。

  所以在使用Java讀寫文件時(shí),一定要指定編碼格式,而不是使用環(huán)境變量的格式。例如下面的語句用于讀取utf-8格式的文件

String encodeType = "utf-8";
File in_file 
= new File("test.txt");
BufferedReader reader 
= new BufferedReader(new InputStreamReader(new FileInputStream(in_file), encodeType));
  
  網(wǎng)上也有關(guān)于修改crontab環(huán)境變量的方法,但是我不建議使用,因?yàn)橐粋€(gè)系統(tǒng)可能是很多人共用的,修改crontab環(huán)境變量可能會(huì)引起他人程序的問題,最好修改自己的程序,保證它不依賴具體的環(huán)境變量。



posted @ 2012-05-14 15:20 jaysoon 閱讀(861) | 評(píng)論 (0)編輯 收藏

2011年7月20日

算法的態(tài)度

很多同學(xué)和朋友經(jīng)常向我抱怨說,算法已經(jīng)成為他們學(xué)習(xí)和工作中的一個(gè)負(fù)擔(dān)。在他們看來,算法只能應(yīng)付一下考試,在學(xué)習(xí)中沒有任何用處;也有人說,求職過程中考算法純粹是浪費(fèi)精力,在實(shí)際工作中沒有用到任何算法。

在我的本科四年中,花了大量時(shí)間學(xué)習(xí)算法,參加算法比賽——成績很濫,朋友們都說,和我的付出嚴(yán)重不成比例,但是我一點(diǎn)也不后悔花費(fèi)時(shí)間學(xué)習(xí)算法。算法讓我在平時(shí)的學(xué)習(xí)中應(yīng)對(duì)各個(gè)科目都從容自如,學(xué)習(xí)起來事半功倍。

在平時(shí)的學(xué)習(xí)交流中,有時(shí)看其他人的代碼相當(dāng)別扭,不是看不懂(有時(shí)真看不懂),而是很納悶,為什么要這么寫呢,明明有很明顯的順暢的思路,干嗎要寫這么繞呢?我將我覺得正確的思路寫出來的時(shí)候,對(duì)方也會(huì)覺得這樣寫順暢了很多,代碼也小了很多。

在一般應(yīng)用中,不會(huì)說讓你寫一個(gè)KMP算法,或者給你設(shè)計(jì)一個(gè)動(dòng)態(tài)規(guī)劃的題目讓你來解。但是如果你會(huì)這些算法,掌握了這種優(yōu)化的思想,在平時(shí)的編寫中會(huì)不知不覺的寫出比較高效的代碼。

有人說,現(xiàn)在中國的軟件現(xiàn)狀就是這樣,不在乎你實(shí)現(xiàn)的有多快,只會(huì)在乎你有沒有實(shí)現(xiàn)所有的功能點(diǎn),隨著硬件條件的改善,一般情況下都能滿足要求。這樣說也是沒錯(cuò),如果你甘愿只做一名碼工,因?yàn)閷?duì)于相當(dāng)大的一部分軟件,效率并不是最重要的,甚至第二、第三重要都排不上。但是對(duì)于企業(yè)級(jí)的應(yīng)用和軟件的核心部分,往往效率是非常重要的。

如果將編程和寫作類比的話,可以進(jìn)行這個(gè)的比較。編程必須會(huì)語言C/C++、Java、Python等,寫作也一定要會(huì)一個(gè)語言漢語、英語、法語,當(dāng)然計(jì)算機(jī)語言有效率的優(yōu)劣以及適合的應(yīng)用的場景,而自然語言沒有這種屬性。算法修養(yǎng)之于編程就像文學(xué)修養(yǎng)之于創(chuàng)作,沒有一定的文學(xué)修養(yǎng)就寫不出好的作品,同樣沒有良好的算法修養(yǎng)也創(chuàng)造不出好的代碼。數(shù)據(jù)結(jié)構(gòu)就像寫作中的排比句等,它們是骨架,結(jié)構(gòu)化編程就像是寫作中的段落,它們使得層次分明。

在靜靜的夜晚,明月透過窗子,照進(jìn)小屋,頓時(shí)一種異樣的情懷涌上心頭。這時(shí)有下面幾種人,第一種,嚎啕大哭,“媽媽……”;第二種,潸然淚下,“我嚓,想家了是不”;第三種,沉思狀,“有首詩可以表達(dá)這個(gè)情懷”,拿起全唐詩,查找了整晚,夜盡天明時(shí),驚呼“找到了,原來是‘舉頭望明月,底頭思故鄉(xiāng)’啊,我記得有的。”;第四種,徘徊低吟“舉頭望明月,底頭思故鄉(xiāng)”;第五種,心中油然而生,“獨(dú)在異鄉(xiāng)為異客,明月千里寄鄉(xiāng)思”。

同樣地,這也反映了一個(gè)程序員算法修養(yǎng)的幾種境界。第一種,菜鳥,不會(huì)表達(dá)自己的思想,這種多見于初學(xué)語言的人,只會(huì)寫hello world之類程序的人;第二種,入門,可以表達(dá)出自己的想法,但是不懂什么算法,只是憑自己對(duì)計(jì)算機(jī)語言的理解寫程序,當(dāng)然寫出的程序功能點(diǎn)可能不少,但是不完善,潛在的bug很多;第三種,有一定的算法基礎(chǔ),但是沒有掌握完全,寫程序時(shí)有高效的意識(shí),對(duì)一些核心程序,看著資料也能寫出相應(yīng)的代碼,但是不能活學(xué)活用;第四種,有不錯(cuò)的算法修養(yǎng),寫出的代碼清晰高效,可勝任關(guān)鍵代碼的編寫;第五種,有很高的算法修養(yǎng),理解了算法的精髓,自己可以得出算法供世人學(xué)習(xí),一般是大師級(jí)人物。國內(nèi)有相當(dāng)一部分程序員就是處于第二階段,他們也有穩(wěn)定的工作,甚至不錯(cuò)的收入,但是總感覺遇到了瓶頸,自己的能力躊躇不前。

有人說,現(xiàn)在各種庫都有,那些代碼都非常高效,我只要熟練使用這些庫就行了,不用學(xué)習(xí)算法??梢赃_(dá)到熟練使用幾個(gè)庫的程序員也算是第三階段,但是要想熟練駕馭更多的庫,將庫函數(shù)熟練的使用,沒有一定的算法基礎(chǔ)是不行的。比如,如果你想熟練使用STL庫,那么對(duì)各種容器和算法都應(yīng)該有一定的認(rèn)識(shí),什么時(shí)候使用list,為什么快排不能應(yīng)用于list?要想回答這些問題,必須掌握初步的算法。

對(duì)于想要在技術(shù)上有一定作為的程序員,沒有算法修養(yǎng),就如同金庸小說中的學(xué)武之人不學(xué)習(xí)內(nèi)功,它可以將外功學(xué)的爐火純清,憑著這份功力可以走遍半個(gè)江湖,但是一旦遇到高手就掛了;反之如果有內(nèi)功修為,學(xué)習(xí)外功可學(xué)一知十,觸類旁通,內(nèi)功修為越高將來的成就越大。

學(xué)習(xí)算法吧!

posted @ 2011-07-20 23:59 jaysoon 閱讀(619) | 評(píng)論 (2)編輯 收藏

2011年1月21日

數(shù)據(jù)挖掘中的指數(shù)函數(shù)

            最近做數(shù)據(jù)時(shí),使用神經(jīng)網(wǎng)絡(luò)建模。在神經(jīng)網(wǎng)絡(luò)中,會(huì)用到激發(fā)函數(shù)(activation function)。

        典型的激發(fā)函數(shù)有Sigmod函數(shù):

                  image

        雙曲正切函數(shù):

                 image

          這兩個(gè)都涉及到指數(shù)函數(shù),在C中,為求指數(shù)函數(shù),使用exp()函數(shù)。

      在數(shù)次出錯(cuò)后找到問題,原來是我的指數(shù)值過大,數(shù)據(jù)中有時(shí)會(huì)出現(xiàn)超過1000的數(shù)字,這導(dǎo)致在求值過程中,即使使用double型,也使得結(jié)果溢出。

      解決方法是定義一個(gè)指數(shù)函數(shù),當(dāng)指數(shù)值超過一定界限便指定一個(gè)相對(duì)無窮大的值,這樣也符合數(shù)學(xué)定義。在我的處理中,將界限設(shè)定為15,當(dāng)該值大于15時(shí),返回3000000;當(dāng)界限值小于-15時(shí),返回0。

posted @ 2011-01-21 23:40 jaysoon 閱讀(1128) | 評(píng)論 (0)編輯 收藏

2010年4月11日

配置本地文件共享

    在配置文件共享時(shí),對(duì)沒有經(jīng)驗(yàn)的用戶會(huì)出現(xiàn)很多問題,這里介紹三點(diǎn)注意事項(xiàng):
    1. 首先打開菜單中“工具”->“文件夾選項(xiàng)”->“查看”,確認(rèn)“使用簡單文件共享”沒有被選上;
    2. 右鍵“我的電腦”,“管理”->“系統(tǒng)工具”->“本地用戶和組”->“用戶”,右鍵“Guest”,“屬性”,在“常規(guī)”選項(xiàng)卡中,取消“賬戶已停用”;
    3. 打開“控制面板”->“管理工具”->“本地安全策略”,打開“本地策略”->“用戶權(quán)利指派”,雙擊“拒絕從網(wǎng)絡(luò)訪問這臺(tái)計(jì)算機(jī)”,確認(rèn)其中的“guest”已刪除。

    
     本文針對(duì)XP用戶,其它用戶可參照。

posted @ 2010-04-11 17:08 jaysoon 閱讀(337) | 評(píng)論 (0)編輯 收藏

2009年4月29日

賦值運(yùn)算符和復(fù)制構(gòu)造函數(shù)

      賦值運(yùn)算符復(fù)制構(gòu)造函數(shù)都是用已存在A的對(duì)象來創(chuàng)建另一個(gè)對(duì)象B。不同之處在于:賦值運(yùn)算符處理兩個(gè)已有對(duì)象,即賦值前B應(yīng)該是存在的;復(fù)制構(gòu)造函數(shù)是生成一個(gè)全新的對(duì)象,即調(diào)用復(fù)制構(gòu)造函數(shù)之前B不存在。   
      CTemp a(b);      //復(fù)制構(gòu)造函數(shù),C++風(fēng)格的初始化
      CTemp a=b;      //仍然是復(fù)制構(gòu)造函數(shù),不過這種風(fēng)格只是為了與C兼容,與上面的效果一樣
      在這之前a不存在,或者說還未構(gòu)造好。

      CTemp a;
      a=b;               //賦值運(yùn)算符
      在這之前a已經(jīng)通過默認(rèn)構(gòu)造函數(shù)構(gòu)造完成。

      我覺得將賦值運(yùn)算符稱為“賦值構(gòu)造函數(shù)”是錯(cuò)誤的,構(gòu)造函數(shù)發(fā)生在對(duì)象創(chuàng)建時(shí)期,而賦值是運(yùn)算符,發(fā)生在“運(yùn)算”時(shí)期,賦值運(yùn)算前,對(duì)象已經(jīng)構(gòu)造完成,所以不能稱之為“構(gòu)造函數(shù)”。
      一家之言!!

posted @ 2009-04-29 18:32 jaysoon 閱讀(1922) | 評(píng)論 (2)編輯 收藏

C++是類層次保護(hù)的

 

class CStack
{
public:
       CStack();  
       CStack(
int  size); 
       CStack(
const CStack& st);   //復(fù)制構(gòu)造函數(shù),注意使用引用
private:    
       
int _size;
       
int _count;
       
int* _s;           
}
;
CStack::CStack(
const CStack& st)
{
      _size
=st._size;
      
if(_size > 0)
      
{
               _s 
= new int[_size];
               _count 
= st._count;                  //訪問st的私有數(shù)據(jù)
               for(int i=0; i<_count; ++i)
                       _s[i] 
= st._s[i];             
      }
         
      
else
      
{
          _s 
=  0;
          _count 
= 0;           
      }
                                            
}

      在C++模型中,保護(hù)是在類層次應(yīng)用的,而不是在對(duì)象層次。
      這句話的意思是,類的任意一個(gè)對(duì)象可以訪問該類的另一個(gè)對(duì)象的內(nèi)部的任何東西。在上面的例子中,復(fù)制構(gòu)造函數(shù)中的賦值語句_size = st._size;訪問了st的私有數(shù)據(jù)。
      這說明,C++中的訪問保護(hù)是按照層次的原則定義的,那么什么事對(duì)象層次的保護(hù)呢?
      在Smalltalk中,成員函數(shù)可以當(dāng)前對(duì)象的私有數(shù)據(jù),但不能訪問任何其它對(duì)象的私有數(shù)據(jù),即使它們屬于相同的類。

posted @ 2009-04-29 17:57 jaysoon 閱讀(306) | 評(píng)論 (0)編輯 收藏

C++中關(guān)于構(gòu)造函數(shù)的幾個(gè)問題

首先我們給出一個(gè)類的例子

class CStack
{
public:
       CStack();  
       CStack(
int  size=100); 
       CStack(
const CStack& st);   //復(fù)制構(gòu)造函數(shù),注意使用引用
private:    
       
int _size;
       
int _count;
       
int* _s;           
}
;
CStack::CStack(
const CStack& st)
{
      _size
=st._size;
      
if(_size > 0)
      
{
               _s 
= new int[_size];
               _count 
= st._count;         
               
for(int i=0; i<_count; ++i)
                       _s[i] 
= st._s[i];             
      }
         
      
else
      
{
          _s 
=  0;
          _count 
= 0;           
      }
                                            
}


int main()
{
    CStack st;
    
return 0;    
}



一. 在main()中,對(duì)象st不知道該調(diào)用哪一個(gè)構(gòu)造函數(shù),因?yàn)镃Stack()和CStack(int  size=100)都滿足條件,此時(shí)正確的編譯器會(huì)立即標(biāo)示這種沖突,強(qiáng)迫實(shí)現(xiàn)者解決這個(gè)問題。

二. 假設(shè)我們已經(jīng)有了一個(gè)CStack對(duì)象s1
CSatck s2=s1;      //這個(gè)句子將會(huì)調(diào)用復(fù)制構(gòu)造函數(shù)
CStack s3 = CStack(200);   //這個(gè)句子將會(huì)做什么呢?

首先,產(chǎn)生一個(gè)臨時(shí)CStack對(duì)象,不妨命名為sss,并調(diào)用構(gòu)造函數(shù)CStack::CStack(200),隨后執(zhí)行復(fù)制構(gòu)造函數(shù)。也就是說,它相當(dāng)于

CStack sss(200);
CStack s3(sss);

這很浪費(fèi)時(shí)間,不過,大多數(shù)編譯器還是能優(yōu)化這種語句。但是我們?yōu)槭裁床火B(yǎng)成一個(gè)好的習(xí)慣,直接寫成
CStack s3(200)呢?

posted @ 2009-04-29 17:45 jaysoon 閱讀(417) | 評(píng)論 (0)編輯 收藏

僅列出標(biāo)題  
<2025年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

導(dǎo)航

統(tǒng)計(jì)

常用鏈接

留言簿

隨筆分類

隨筆檔案

文章分類

文章檔案

收藏夾

C++

搜索

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美视频在线免费| 国产精品99久久久久久白浆小说| 亚洲欧洲一级| 亚洲国产成人av在线| 韩国免费一区| 曰韩精品一区二区| 亚洲高清资源综合久久精品| 亚洲免费观看| 亚洲性视频网站| 在线亚洲美日韩| 亚洲一区日韩| 久久精品青青大伊人av| 免费不卡视频| 亚洲激情综合| 亚洲精品国产精品久久清纯直播| 亚洲人久久久| 午夜国产欧美理论在线播放| 久久久久88色偷偷免费| 蜜桃av一区二区在线观看| 欧美精品大片| 国产日本欧美一区二区三区| 亚洲电影第三页| 亚洲一区三区视频在线观看| 久久爱另类一区二区小说| 免费在线国产精品| 一区二区三区久久精品| 久久免费观看视频| 国产精品免费看| 亚洲欧洲精品一区二区精品久久久| 一区二区精品| 欧美成人嫩草网站| 午夜激情久久久| 欧美日韩成人一区| 91久久国产综合久久| 欧美一级免费视频| 亚洲人成艺术| 欧美gay视频| 狠狠综合久久av一区二区小说 | 国产欧美精品一区aⅴ影院| 亚洲高清毛片| 久久天天狠狠| 亚洲欧美精品| 国产精品第13页| 亚洲毛片一区| 欧美电影在线观看| 久久精品免费| 好看的日韩av电影| 欧美在线综合| 亚洲欧美日韩国产一区| 欧美体内she精视频| 亚洲三级电影全部在线观看高清| 久久精品成人欧美大片古装| 一区二区三欧美| 欧美日韩精品伦理作品在线免费观看| 在线欧美一区| 欧美 亚欧 日韩视频在线| 性色av一区二区三区在线观看| 欧美午夜电影在线观看| 一区二区三区免费网站| 国产精品久久一卡二卡| 亚洲一区二区精品在线观看| 亚洲精品一区二区网址| 欧美日韩1234| 亚洲主播在线| 亚洲一区二区三区精品在线| 一区二区三区高清不卡| 91久久久久久| 欧美日韩国产美| 亚洲婷婷国产精品电影人久久| 亚洲美女免费视频| 国产精品久久久一区麻豆最新章节| 亚洲自拍偷拍麻豆| 亚洲一区日韩| 国产日韩综合一区二区性色av| 久久国产精品久久久久久电车| 香蕉乱码成人久久天堂爱免费| 国产一区二区久久| 欧美不卡高清| 欧美日韩p片| 午夜在线a亚洲v天堂网2018| 欧美伊人久久久久久久久影院| 一区二区在线不卡| 亚洲精品无人区| 国产日韩av一区二区| 免费亚洲电影| 欧美三区免费完整视频在线观看| 香蕉久久久久久久av网站| 久久久久久久久久久久久女国产乱| 亚洲国产精品福利| 一区二区三欧美| 黄色亚洲大片免费在线观看| 亚洲黄色三级| 国产视频丨精品|在线观看| 欧美成va人片在线观看| 国产精品高潮视频| 免费成人av资源网| 欧美网站大全在线观看| 久久久亚洲午夜电影| 欧美精品aa| 久久久久女教师免费一区| 欧美精品在线极品| 欧美专区在线观看一区| 欧美激情自拍| 久久久亚洲精品一区二区三区| 欧美日韩免费一区| 久久亚洲综合色| 国产精品区一区| 亚洲裸体在线观看| 亚洲激情国产| 久久三级福利| 久久久国产成人精品| 欧美日韩亚洲激情| 欧美黄网免费在线观看| 国精产品99永久一区一区| 亚洲美女中文字幕| 亚洲国产欧美一区二区三区丁香婷| 亚洲主播在线播放| 亚洲小少妇裸体bbw| 欧美激情欧美狂野欧美精品| 老鸭窝亚洲一区二区三区| 国产精品日韩| 宅男在线国产精品| 一本到12不卡视频在线dvd| 久久综合导航| 免费日韩av片| 红桃视频成人| 久久精品成人欧美大片古装| 亚洲欧美日韩国产一区二区| 欧美精品国产精品| 亚洲国产天堂久久国产91| 91久久久在线| 91久久久久| 免费毛片一区二区三区久久久| 午夜亚洲伦理| 国产精品一区二区男女羞羞无遮挡 | 亚洲视频在线观看一区| 亚洲美女在线观看| 欧美mv日韩mv亚洲| 91久久午夜| aⅴ色国产欧美| 欧美激情在线有限公司| 亚洲精品国产精品久久清纯直播| 亚洲精品一区二区三区99| 欧美另类视频在线| 在线综合亚洲欧美在线视频| 亚洲欧美日韩在线综合| 国产精品丝袜91| 午夜一区二区三视频在线观看| 欧美一区二区三区四区视频 | 久久亚洲欧美| 亚洲福利小视频| 夜夜精品视频| 国产精品99一区| 亚洲欧美在线aaa| 久久亚洲高清| 亚洲欧洲另类国产综合| 欧美日韩成人一区二区| 亚洲欧美国产毛片在线| 久久午夜影视| 一区二区三区国产在线观看| 国产精品久久午夜夜伦鲁鲁| 久久激情五月激情| 亚洲黄页一区| 久久久精品一区| 日韩视频免费大全中文字幕| 国产精品国产成人国产三级| 欧美一区二区三区免费看| 欧美成人午夜| 亚洲字幕一区二区| 亚洲国产成人久久| 国产精品久久久久久久久久免费看 | 在线精品福利| 欧美日韩三区四区| 欧美一区二区三区喷汁尤物| 亚洲第一中文字幕| 性欧美暴力猛交69hd| 在线精品一区| 欧美婷婷久久| 乱中年女人伦av一区二区| 日韩五码在线| 狂野欧美激情性xxxx欧美| 亚洲欧美日本日韩| 裸体一区二区三区| 亚洲一本视频| 亚洲黄色在线看| 免费h精品视频在线播放| 国产精品jvid在线观看蜜臀| 欧美一区二区国产| 亚洲国产高清一区二区三区| 亚洲欧美在线高清| 亚洲国内欧美| 国产午夜精品全部视频在线播放| 免费成人高清| 欧美一级久久久| 一本到高清视频免费精品| 牛夜精品久久久久久久99黑人| 午夜精品福利视频| 99re这里只有精品6| 黄色综合网站| 国产日韩欧美在线|