星期日, 3月 11, 2007

系羽隊聚

經過了一個學期,正副隊長輪替之後,今天,久違的隊聚到來。

地點在中央前門的友竹居,聽說它「貴死人不長命」。
我和居米一路飆到了現場,看到菜單,果然傻眼。最值得吃的餐點高達490,雖然最近發了不少新資,但錢可不是這樣花的,因此我退而求其次,選了280的餐點。

在餐點送上之前,分成兩桌,分別是uno與撲克牌的大廝殺。玩著玩著,覺得太單調不好玩,又自己加了些規則,像+4可以指定對手,+2、+4的牌可以連加等等。

餐點送上之後,看來看去,只有主餐還不錯,其他的與平常吃的快餐半斤八兩。

在大家都享用完畢後,全部都聚了過來,甚至演變成13個人玩兩副牌,因為人實在太多了,所以取消沒牌就要抽到有牌的規則(這根本是個惡夢)。

就這樣大家一起玩牌到10點,散會。結帳時我們還討論打折的問題,因為特約商店打八折,又要收一成服務費,結果老闆就直接打九折。但經過詳細計算,應該要打八八折的。真不知是數學差還是心機重阿!

回程時本想一路衝上上坡,卻因為手機掉落而不得不回頭撿,也因此失了衝勁,乖乖地把腳踏車牽上去。後來不幸下了小雨,卻只有三把傘,而我的傘又是最大的。接下來的情況就不說明啦!我又不是不知道,只是.....

我還是不夠坦然阿!!唉唉~

回味

一篇篇地讀著,就像落葉一片片地飄落。

看著自己堆砌出的文章,心裡頭又增添幾分感慨。大一初的熱血,在一上的怠惰中,消磨殆盡;現在雖因忙碌拾回了幾分,仍找不回那股真誠。有了個版之後,用心寫下的文章少了,多的是隨意寫下的生活文,因而,我感到文筆稍減了幾分。

現在的我,是否少了幾分天真,多了幾分思慮。以前我總是能直率地寫出想說的話,然而,歷經了暑假的變動,一上的浩劫,寫篇文章,我總得一再顧慮,這樣寫,會不會引起什麼反彈。

寫 blog 是種樂趣,甚至視為休閒的一部分,尤其是暑假,我幾乎天天寫。藉由 blog,我分享許多生活上的趣事,也讓週遭的人了解我的心情。但大一上學期中,這樣的文章急遽減少,個版是原因之一,但,那幾樁事件帶來的打擊才是主謀。再加上心境的改變,寫 blog 似乎不再是那麼重要的事。

我回來了,拾回那股芬芳的味道,失去了某些東西,學到新的價值。坦然,並不是件簡單的事,但我會加油的。

生活,就像落葉般地飄落,卻不代表消逝。俯瞰大地,他們就在身邊。

星期六, 3月 10, 2007

獨處的時光

獨處與孤單,可以掛上等號嗎?

周遭的人離去,留下空蕩的寢室、寂靜的氣氛還有我。熟悉不過的男三舍,人事已非,充斥著陌生的臉孔、素聞的喧鬧聲。眼前的電腦,呈現一片死寂,我不再蠢蠢欲動。它,取代不了最真實的笑聲。隨著月光的浮現,雙手逐漸沉重。輕盈的鍵盤敲打聲消逝了,取而代之的是鐵塊沉重的撞擊聲。

我想逃,逃出這令人窒息的空間,逃出夜晚的籠照。

這就是我體會過的孤獨!

孤單,是因為無法接受眼前的現實。平時總是與朋友東奔西跑,或聚在寢室裡一同歡笑,突然間,全都消逝了,失落感頓時而生。

在心裡最無力的時候,我想盡所有我現在能做的事。我的確有事做了,然而內心,還是冷冷地顫慄著。

孤單,並不是來自於生活的層面,而是種逃避的心境。
獨處,也是可以很快樂的!

一本生動精采的小說、一篇通情達理的好文、一個心念的轉變、一道多元化的思緒。我已經遺忘了自我,享受我陷入的情境。

做你「真正」想做的事吧!排除任何目的,只為享受。
不要為了等級、破關或勝利而玩;不要為了想獲取而讀書;不要為了無聊而做事。
不要以為做慣的事,就是真正想做的事!!!

獨處,不一定孤單;齊聚,也不見得快樂。

星期四, 3月 08, 2007

Initialization VS Assignment

double d = 3.14;

double d;
d = 3.14;

以上這兩種寫法的表層意義是一樣的;然而,實質上卻完全不同。
前者稱為 Initialization,後者則是 Assignment。

前者只會出現在 Definition,而後者是隨時可用。就效率上來說,Initialization 大於 Assignment,原因在於 Initialization 是在配置出生硬空間時,就在該空間上賦值;而 Assignment 則是先找出該空間所在,再加以賦值。

就 class 來說, Initialization 是喚起 copy constructor;而 Assignment 則喚起 Assignment operator。

對所有 class object 來說,若沒有明確指明 Initialization 仍必然進行 Initialization,也就是喚起 default constructor。
而 built-in type 為 Local or Dynaic 若不指明要 Initialization 則不會進行 Initialization。

Declaration VS Definition

所謂 Declaration,只是告知程式(同時也是告訴我們)有這樣的東西存在,例如:

string s;
extern double d;
int gcd (int a, int b);

除了第一個是宣告也是定義外,後二個只是單純的宣告,而不包含定義。

所謂 Definition,是為該變數(函式)配置空間,並與宣告的名字與型態結合。例如:
vector vec (10);
int gcd (int a, int b) {
if (b == 0)
return a;
return gcd (b, a % b);
}

以上兩者皆是定義。

There must always be exactly one definition for each name in a C++ Program. However, there can be many declarations.

另一個特點在於,只要有宣告,就可以在該 scope 內使用它,但前提是 compiler 要能找到定義所在(需放在全域空間或單純宣告之前),舉個例子:

#include< iostream >
using namespace std;

int main () {
int gcd (int a, int b);
int test = 10;
extern int test;
cout << test << endl;
return 0;
}

int gcd (int a, int b) {
if (b == 0)
return a;
return gcd (b, a % b);
}

其中的 test 及 gcd 都有兩次宣告和一次定義,因為在很多時候,定義時宣告的過程是難以避免的。

計較

不是不愛計較,而是不想計較。

很多事都覺得「算了算了,反正沒多大影響」!(當然有少數事我非堅持不可)
可是,話不說出來真的好嗎?

有時候不講,是不想增添自己的麻煩;而很多事習慣就好,不太超過都ok。

不可能事事都順心如意,忍受是難免的,而我也不喜歡跟別人辯,或是給別人添麻煩,所以想想就算了。只是,這樣下去行嗎?這麼不敢大膽講出自己的想法主張!

我不知道,該如何?

星期三, 3月 07, 2007

implicit conversion

在書上看到以下程式碼(有經過微修)


class complex {
double re, im;
public:
complex (double r = 0, double i = 0) : re (r), im (i) {}
// following skip
};

void f (complex z) {
complex a = 2.3;
complex b = 1/a;
complex c = a + b * complex (1, 2.3);

//.....
}

標示為紅色的部分令我感到訝異,這真的能執行嗎?
因此我自行寫了 test code,果真可以。

每個變數都需以 constructor 初始化,但 complex並非 base type,因此宣告時的 =(assign)與 () (initialization) 是不同的。由於 complex a = 2.3; 的結果與 complex a (2.3); 相同,因此我最初假設這兩行 statament 的意義是一樣的。後來我想到在 constructor 前加上 explicit,預料中的事發生了,原先 compile OK 的 code 出現 error。

在短短一行 complex a = 2.3 牽涉到:

1、implicit conversion
把 double type 2.3 轉換成 complex(這中間呼叫了 constructor)

2、initialization
喚起 copy constructor 初始化 a;

加上 explicit 後 error 的原因在於,explicit 會禁止藉由此 constructor 做 implicit conversion,除非使用者明確要求轉換,也就是 complex a = static_cast < complex > (1.2);

--
還好還記得,不然會被向上學長吊起來 XD