長いのでコメントの返事をここに書きますw

>HKさん 『8行目のデフォルト引数の double() の意味がわかりません。』
あ,すいません.意味は定数の0と同じです.doubleのような組み込み型にも普通のクラスのデフォルトコンストラクタと同じ書き方が出来て,組み込み型のデフォルトコンストラクタが返す値は,0をその型にキャストした値にあることが規格で決まっています.
要するに以下と同じです.

Vector(size_t n, double val = 0)

普通,こういうVectorクラスはテンプレート(テンプレート引数の型をTとします)にしておいて,

Vector(size_t n, T val = T());

のようなコンストラクタを書く(std::vectorのコンストラクタの一つががまさにこの形を取っています)ので,その癖でdouble()という書き方をしてしまいました.上の例では簡単のためにテンプレートにしていないです.
#追記:なんか抜けてると思ったらデストラクタ抜けてた・・・.恥ずかしいったらありゃしねぇ・・・orz