CC 程式設計程式設計問題

時間 2022-11-19 03:10:36

1樓:

c :只有物件內部擁有指標才有這個問題;

c不存在這個問題;因為c不是物件導向的。

所有拷貝都是淺拷貝。

深拷貝自己做(用函式)。

//淺拷貝和深拷貝的區別:

對於指標,淺拷貝把指標值複製過去。

對於指標,深拷貝把所指內容複製過去(多半要重新分配記憶體)。

vector,string cstring 都是同時使用淺拷貝和深拷貝。或者只使用深拷貝。

有引用計數的型別,同時使用淺拷貝和深拷貝。

c++ 沒有定義指標的,並且沒有資料成員使用指標的結構,類,以及內建型別都是淺拷貝。只複製數值本身。

一般來說複製字串,矩陣都不可以複製指標,只能複製內容,當然你要採用引用計數的辦法,某些時候只需要複製指標就可以了,這是淺拷貝,有時要修改內容,就要用深拷貝!這些都是你定義類的時候可以決定的!

c,c++內建型別,不存在淺拷貝,深拷貝之說,統統都是淺拷貝。

因為內建型別物件就是資料;而指標,引用等型別,物件只是資料的引用(指標從某種意義上來說也是一種引用),資料和物件並不在一起定義。

由於引用實際上實現為常量指標,本身相當於一種常量,引用是不能更換引用物件的。

//定義 int & ref = a;---> int *const pref =&a;

#define ref (*pref)

//賦值 ref =x; ----> *pref = x;

//賦值 x=ref ; ----> x= *pref;

//ref++ ;++ref; ----> (*pref)++; ++(*pref);

//ref--; --ref; ----> (*pref)--;--(*pref);

所以 c++引用也沒有淺拷貝,深拷貝之說。

2樓:匿名使用者

淺拷貝就是物件的資料成員之間的簡單賦值,如你設計了乙個沒有類而沒有提供它的複製建構函式,當用該類的乙個物件去給令乙個物件賦值時所執行的過程就是淺拷貝

講的很清楚

3樓:唐麗梅

淺拷貝只是拷貝了值,沒有分配位址空間;

深拷貝不僅拷貝了值,而且同時重新申請了一塊空間,用來存放拷貝的值。。。

4樓:匿名使用者

深拷貝和淺拷貝的區別是在物件狀態中包含其它物件的引用的時候,當拷貝乙個物件時,如果需要拷貝這個物件引用的物件,則是深拷貝,否則是淺拷貝。

vb程式語言程式設計序問題),VB程式語言 程式設計序!!(3個問題)

三個問題才給10分,也太少了,呵呵 不過還是幫你解決一下。1 如下 private sub form load dim i as integer dim s,t as single dim n as integer show clss 0 t 1 n val inputbox 請輸入n的值 if n...

VB程式設計問題,VB程式設計問題

窗體上新增picture1控制項,再新增command1控制項,右鍵點中command1複製,貼上三次,按圖中排列好 private sub command1 click index as integer select case index case 0 picture1.cls picture1....

c 閏年程式設計問題,C 閏年程式設計問題

把yr變成days不就行了!我來說說,你那程式明顯的錯了,我修改了,如下 date operator long long days 0 int year yr 1900 從1900年到yr過了多少年 int year 4 year 4 過了多少個四個年 int year 100 yr 100 19 ...

c語言程式設計問題,C語言程式設計問題

include void main else if b 由於b 1,所以 b的值為false,所以不進入else if b else printf d d d 由於d的值沒有改變,輸入初始值d 20 include main include main else if b 此時b 1,b 0為假els...

C語言簡單程式設計問題,C語言程式設計問題

接收字串要用gets c 不然只要接收到空格就停止了顯示字串長度可以用printf 5d strlen c 在前面包含 顯示字串要用puts c 函式 for迴圈的範圍沒有包括下面if c i a c i a include include define f 99 void main printf ...