C 物件賦值呼叫預設賦值建構函式

2022-02-28 01:15:00 字數 1252 閱讀 8369

1樓:北京博飛港澳台聯考

呵呵,一般c++的書上都會介紹的基礎知識。

建構函式有這麼幾種:我以類名為a的類來說說吧

1. 預設建構函式,新建a的物件時預設呼叫(如果沒有其他符合的建構函式的話)

2. 拷貝建構函式,用a的乙個物件來對另乙個a類物件進行初始化

4. 賦值函式,用於a物件間的賦值操作

5. 其他建構函式,自己定義。

以上1~3的3個建構函式是每個c++類缺省內置的,即使你不宣告也會存在的。

下面舉個例子

class a // 預設建構函式,什麼都不做

a(int i) // 自定義建構函式,用int型變數i來初始化a類物件成員m_i

a(a& a) // 拷貝建構函式,一般不需要特別過載,功能是將形參物件的內部成員全部拷貝到新物件中。

a& operator=(const a& a); // 賦值函式,其實不算是建構函式,只是運算子過載而已。用形參物件來對當前物件進行賦值

a& operator=(const int i); // 另乙個過載的賦值函式,用i來對a類物件賦值

~a(){}

public:

int m_i;

};a& a::operator=(const a& a)

a& a::operator=(const int i)

下面是應用的例子

a a; // 呼叫預設建構函式

a.m_i=100; // 外部對a的成員進行賦值

a b(a); // 呼叫拷貝建構函式,用a物件來對b物件初始化,此時b物件的m_i也變成了100

a c;

c=b; // 呼叫賦值函式,用物件b來對c進行賦值。預設的賦值函式功能類似與拷貝建構函式

c=200; // 呼叫自定義賦值函式,用200來對c物件的m_i進行賦值

a d(150); // 呼叫了自定義的建構函式,用150對d物件的m_i進行賦值

以上是本人臨時亂寫的**,水平有限,不當之處請各位大俠批評指正。

2樓:匿名使用者

會不一樣的。

例如:char s="sdfasd";

cstring str = "sii";

你如果想吧s 的值賦值給str。

那麼 str = s是不對的,但是 str = cstring(s)是可以的。

b(a) 存在強制型別轉換。

3樓:匿名使用者

都是呼叫複製建構函式

C中過載賦值建構函式的問題,C複製建構函式和號過載問題

賦值運bai算符和複製建構函式都 du是用已存zhi在的b物件來建立另dao乙個物件a。不同之回處在於答 c 複製建構函式和 號過載問題 表述基本上沒有問bai題。從功能上來du說,建構函式是用於建立zhi物件的dao,operator其實是可以看成普通內的成員函式,只不容 過是以符號的形式代替文字...

在main函式外給陣列賦值,C語言在main函式外定義陣列麼?不也是初始化麼

因為一般情況下,main 函式是程式執行的入口,沒進門就賦值當然沒意義了,根本執行不到。c語言在main函式外定義陣列麼?不也是初始化麼 可以的,這個樣子a就是全域性變數了。所有的函式都可以訪問。在main外,定義陣列時 定義任何變數都是 可以初始化賦值!但不可以有單獨的賦值操作語句。如 int i...

C 兩個New出來的物件,相互怎麼賦值?

可考慮將這些控制項變為內部變數以便其他方法使用。如。private button colorbut private textbox colorbox private void button4 click object sender,eventargs e private void colorbut ...