關於帶指標的類以及函式符過載的問題

2023-01-02 12:50:39 字數 1058 閱讀 1875

1樓:匿名使用者

1全部你問題非常好。

(1)關於過載賦值運算子,是為了避免「淺拷貝」的發生,如:

student a("zhang",10),b;

b=a;

以上把利用原來的=給b賦值,賦值的原理是把a的記憶體塊完全賦制給b後,b的age與scorenum與a中完全一樣,同理,b中的score與a的也一樣,都是一個地址。此時發生的了什麼?

a.score與b.score指向了同一段記憶體共間,即他們共享了同一段記憶體空間。這會造成什麼問題呢?

i)如果想修改b的成績,會發現a的也跟著改變了,想修改b的成績,a的也跟著改變了。即a與b的成績被「共享」了。

ii)程式結束時,a與b都要自動釋放的,如果先釋放b,則會呼叫「析構」函式,「解構函式」會釋放b.score指向的由new操作申請的記憶體塊,接著會釋放a,解構函式也會釋放a.score指向的記憶體塊,這時問題出現了:

由於釋放b時已經釋放了b.score指向記憶體塊,釋放a時又試圖釋放a.score(b.

score)的記憶體塊,即想釋放已經釋放的記憶體塊,會發生嚴重的「記憶體」錯誤。

(2)過載解構函式的目的是為了呼叫delete釋放物件成員指向的由new申請的記憶體塊。

(3)過載拷貝建構函式的目的與過載賦值執行符=號是一樣的,在以下幾個地方也會發生「淺拷貝」的事情,如:

student a("zhang",20),b(a); /*呼叫拷貝建構函式把a去初始化b*/

.....

void fun(student b)

...fun(a); /*呼叫fun時,用a賦值給形參b會呼叫拷貝建構函式*/

還有當一個函式返回一個物件時,也會呼叫拷貝建構函式:

...student a;

..return a;

..一句話:過載賦值執行符與拷貝建構函式就是為了解決「淺拷貝」的問題,使每個物件中的指標都獨立指向「自己」需要的記憶體空間,而不是共享;解構函式則是為了釋放物件中動態申請的記憶體資源。(完)

2樓:小梅貓貓啊

hghjrtdjhkfgjsarhkdjsahdwkdbhefji

c 中基類指標指向派生類時,呼叫的虛擬函式是派生類的,為什麼要這樣啊

直接用子類物件呼叫函式當然沒問題,基類指標指向派生類物件是多型性的體現。什麼是多型呢?多型就是不同物件接受相同的訊息,但是卻產生不同的行為,舉一個很簡單的例子,有一個圖形類,他有幾個派生類,如圓形,三角形,矩形。圖形類有一個函式area 用來求面積,但是由於不同圖形求面積的方法不同,要由具體的派生類...

關於顯示卡的各項屬性以及引數的指標!我是用來玩大遊戲的,但現實點兒,不可能搞個泰坦耍的

首先看核心型號.這個是最重要的.現在都是以核心型號來劃分效能了.頻寬完全是跟著核心跑了.頻率細分同型號頻率越高效能越好.視訊記憶體大小也是跟著核心走的.現在買顯示卡看第二位數字 要玩大型遊戲amd顯示卡第二位數字必須大約6nv顯示卡第二位4以上 其他數字越大越好 你想多了。這些東西,只能在相同構架內...

關於初等函式 問指數函式和冪函式的影象平移規律?第一列是初始表示式,問第二三列分別是怎麼平移的

一般都是說沿著某軸平移多少單位,最簡單的就是利用座標點進行影象的顯示,注意有的點是不變的,指數加一,說明什麼,說明x不變,y乘以a 錯了。bai 指數函式平移是這du 樣的沒錯。zhi 指數函式向左平移daoh個單位再向上平回移k個單位是y a x h k。但是答冪函式向左平移h個單位再向上平移k個...