1. 程式人生 > >發現一點c++的不足之處

發現一點c++的不足之處

ons 邏輯 ref cnblogs pre 不優雅 per 解決 clas

我碰到這樣一種情況:一個函數,它的參數是const Bigint &a,同時我重載了Bigint的下標訪問,就是[]這個符號。中括號的重載我是這樣寫的:

1 int &operator [](int x){ return a[x]; }

,a[x]是Bigint的成員a的一個元素。那麽問題來了,有的Bigint帶const,有的不帶,訪問不帶const的Bigint對象沒問題。但是訪問帶const的就會出錯,因為const int&不能轉換成int&。。

我想:把那個函數的int改成const int試試看,結果發現我的原意是要改變不帶const的BIgint的值,結果現在改不了,因為c++的邏輯是:如果你有可能搞事情,就直接禁止你搞事情。而函數又不能有同類型,非const和const的重載,所以這個問題根本無法解決。

據張子蘇大佬說,好像可以用c++11的一個什麽reference解決,但是noip不能用c++11呀。。所以只能不優雅了。。

發現一點c++的不足之處