構造函數,什么是構造函數
1、什么是構造函數
構造函數(constructor)是一種特殊的方法 。主要用來在創建對象時初始化對象, 即為對象成員變量賦初始值,總與new運算符一起使用在創建對象的語句中 。特別的一個類可以有多個構造函數 ,可根據其參數個數的不同或參數類型的不同來區分它們 即構造函數的重載。構造函數的功能主要用于在類的對象創建時定義初始化的狀態。
2、什么叫構造函數
構造函數 - 簡介
構造函數 是一種特殊的方法 主要用來在創建對象時初始化對象 即為對象成員變量賦初始值
總與new運算符一起使用在創建對象的語句中 特別的一個類可以有多個構造函數 可根據其參數個數的不同或參數類型的不同來區分它們 即構造函數的重載
構造函數 - 構造函數與其他方法的區別
1.構造函數的命名必須和類名完全相同;而一般方法則不能和類名相同.
2.構造函數的功能主要用于在類的對象創建時定義初始化的狀態.它沒有返回值,也不能用void來修飾.這就保證了它不僅什么也不用自動返回,而且根本不能有任何選擇.而其他方法都有返回值.即使是void返回值,盡管方法體本身不會自動返回什么,但仍然可以讓它返回一些東西,而這些東西可能是不安全的.
3.構造函數不能被直接調用,必須通過new運算符在創建對象時才會自動調用,一般方法在程序執行到它的時候被調用.
4.當定義一個類的時候,通常情況下都會顯示該類的構造函數,并在函數中指定初始化的工作也可省略,不過Java編譯器會提供一個默認的構造函數.此默認構造函數是不帶參數的.而一般方法不存在這一特點
5當一個類只定義了私有的構造函數,將無法通過new關鍵字來創建其對象,當一個類沒有定義任何構造函數,C#編譯器會為其自動生成一個默認的無參的構造函數。
構造函數 - C++中的構造函數
C++的構造函數定義格式為: 構造函數
(參數表)
//...(還可以聲明其它成員函數)
::(參數表)
//函數體
如以下定義是合法的:
T(int a=0){i=a;}//構造函數允許直接寫在類定義內,也允許有參數表。
當程序中沒有析構函數時,系統會自動生成以下構造函數:
::(){},即不執行任何操作。
構造函數 - C++例子
//注意若將本代碼直接復制進編譯器,可能會報錯,原因是網頁生成時會在代碼前加一個中文占位符
//最好將代碼再寫一次
time() //constructor.構造函數
程序運行情況:
10 11 11 回車
任何時候,只要創建類或結構,就會調用它的構造函數。類或結構可能有多個接受不同參數的構造函數。構造函數使得程序員可設置默認值、限制實例化以及編寫靈活且便于閱讀的代碼。
JAVA示例代碼:
PHP中的構造函數
構造函數的聲明與其它操作的聲明一樣,只是其名稱必須是兩個下劃線__construct( )。這是PHP5中的變化;PHP4的版本中,構造函數的名稱必須與類名相同。為了向下兼容,如果一個類中沒有名為__construct( )的方法,PHP將搜索一個與類名相同的方法。
格式:function __construct ( [參數] ) { ... ... }
例子:
function _ _construct(){ // 構造函數
C#例子
構造函數是在創建給定類型的對象時執行的類方法。構造函數具有與類相同的名稱,它通常初始化新對象的數據成員。
在下面的示例中,使用一個簡單的構造函數定義了名為 Taxi 的類。然后使用 new 運算符來實例化該類。在為新對象分配內存之后,new 運算符立即調用 Taxi 構造函數。
3、什么是構造函數
構造函數是一種特殊的方法,主要用來在創建對象時初始化對象,即為對象成員變量賦初始值。
構造函數與其他方法的區別:
1、構造函數的命名必須和類名完全相同;而一般方法則不能和類名相同。
2、構造函數的功能主要用于在類的對象創建時定義初始化的狀態。它沒有返回值,也不能用void來修飾。這就保證了它不僅什么也不用自動返回,而且根本不能有任何選擇。
3、構造函數不能被直接調用,必須通過new運算符在創建對象時才會自動調用,一般方法在程序執行到它的時候被調用。
4、當定義一個類的時候,通常情況下都會顯示該類的構造函數,并在函數中指定初始化的工作也可省略,不過Java編譯器會提供一個默認的構造函數。此默認構造函數是不帶參數的。
5、當一個類只定義了私有的構造函數,將無法通過new關鍵字來創建其對象,當一個類沒有定義任何構造函數,C#編譯器會為其自動生成一個默認的無參的構造函數。
構造函數的例子如下:
class
{
public:
};
{
//函數體
}
如以下定義是合法的:
class T
{
public:
//構造函數允許直接寫在類定義內,也允許有參數表。
private:int i;
};
當程序中沒有析構函數時,系統會自動生成以下構造函數:
即不執行任何操作。
//注意若將本代碼直接復制進編譯器,可能會報錯,原因是網頁生成時會在代碼前加一個中文占位符。
//最好將代碼再寫一次。
#include
using namespace std;
class time
{
public:
{
hour=0;
minute=0;
sec=0;
}
private:
int hour;
int minute;
int sec;
};
{
class time t1;
return 0;
}
4、簡述構造函數和析構函數的作用
構造函數只是起初始化值的作用,但實例化一個對象的時候,可以通過實例去傳遞參數,從主函數傳遞到其他的函數里面,這樣就使其他的函數里面有值了。
析構函數與構造函數的作用相反,用于撤銷對象的一些特殊任務處理,可以是釋放對象分配的內存空間。
把類的聲明放在main函數之前,它的作用域是全局的。這樣做可以使main函數更簡練一些。在main函數中定義了兩個對象并且給出了初值,然后輸出兩個學生的數據。
當主函數結束時調用析構函數,輸出stud has been destructe!。值得注意的是,真正實用的析構函數一般是不含有輸出信息的。
:
當定義一個類的時候,通常情況下都會顯示該類的構造函數,并在函數中指定初始化的工作也可省略,不過Java編譯器會提供一個默認的構造函數.此默認構造函數是不帶參數的。而一般的方法不存在這一特點。
構造函數有回滾的效果,構造函數拋出異常時,構造的是一個不完整對象,會回滾,將此不完整對象的成員釋放(c++)。
當一個類只定義了私有的構造函數,將無法通過new關鍵字來創建其對象,當一個類沒有定義任何構造函數,C#編譯器會為其自動生成一個默認的無參的構造函數。
請添加微信號咨詢:19071507959
最新更新
推薦閱讀
猜你喜歡
關注我們
