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 ...