TerryW

可發文群組
  • 內容數

    98
  • 註冊日期

  • 最後上線

文章 發表由 TerryW

  1. 通常是寫程式的人的觀念問題

    要不就是使用VBSCRIPT,要不就是只有在IE上測試網頁

    再不然有些還直接使用ACTIVEX,那些當然就IE ONLY啦= =#

    真要說的話,FontPage的網也幾乎也是IE Only= =""

    基本上ASP不會用到ActiveX吧,畢竟他不會在client端做事情

    除非你是指ASP.NET的一些驗證控制項之類的東西

  2. 不過編譯器會怎麼處理字串又是另一回事

    有些會將全部的字串設定成NULL字元,有些只在第一個設定NULL字元。

    這就像下面三個函數的差別吧~

    只要在一開始宣告陣列時初始化,後面未被指定內容的元素會隱含的初始化為0

    像是下面這些:

    int ia[10]={0};

    float fa[10]={1.0f, 2.0f};

    char cha[10]={0};

    恩,不過真要說的話我並不是很確定

    char cha[10]="";和char cha[10]={0};是否同義就是

    就我目前用到現在都是這樣啦(汗)

  3. 呃 建議你再把函數的部分複習一遍

    首先有幾件事要弄清楚

    int add(int x, int y)

    {

    ...

    }

    以上叫函數的定義,也就是函數內容的實做

    如果只有以下這樣:

    int add(int x, int y); or int add(int, int);

    這是函數的宣告,告訴編譯器函數的形式

    要使用函數時,就和數學裡函數的用法一樣

    如果那個函數有參數(也就是要你傳值給它),像這邊的int add(int, int)

    那你就要傳兩個整數給他相加,以你的code裡是num1和num2

    因此用法如下:

    a=add(num1, num2);

    以上簡短說明,詳細看書比較快

  4. 唔 不好意思,這點可以請您舉個例子嗎XD 因為這樣的描述其實我不是很明瞭^^"

    例如以下程式碼無法通過編譯

    int x=2, y=3;
    ++(x+y);

    x+y傳回的值是無法被更動的,也就是並非l-value

    此外,當我們對自行定義的class過載operator +(or - * /)時,是這樣做的(以大數為例):


    class Bignumber
    {
    private:
    //略
    public:
    ...

    void add(const Bignumber &obj){ //略,讓物件本身加上另一個大數 }

    [COLOR="Red"]const Bignumber[/COLOR] operator +(const Bignumber &rhs)
    {
    Bignumber temp(*this);
    temp.add(rhs);
    return temp;
    }

    ...
    }

    可以看到operator +的回傳型態是const Bignumber,一個常數值

    這樣做的目的是避免出現

    x+y=b

    或是

    ++(x+y)

    等情況

    至於= ++ --等operator就是回傳reference了

  5. 對了,關於以下這點

    [*] 左值(Lvalue)與右值(Rvalue)

    在 C 中,大多數的運算結果都是回傳數值(也就是右值)

    而在 C++ 中,則改成回傳記憶體位址(左值)

    因此,++++x 這種運算在 C++ 是合法的而 C 則不被允許

    不是所有的operator都回傳位址(我覺得應該要講reference比較適合),像+-*/就不是