當前位置:主頁 > 生活 > 正文
    什么是構造函數(什么叫構造函數)_環球資訊
    來源:熱點網作者:洞察網2023-05-28 20:28:48
    構造函數(constructor)是一種特殊的方法 。主要用來在創建對象時初始化對象, 即為對象成員變量賦初始值,總與new運算符一起使用在創建對象的語句中 。特別的一個類可以有多個構造函數 。

    文章目錄:

    1、什么是構造函數2、什么叫構造函數

    一、什么是構造函數

    構造函數(constructor)是一種特殊的方法 。主要用來在創建對象時初始化對象, 即為對象成員變量賦初始值,總與new運算符一起使用在創建對象的語句中 。特別的一個類可以有多個構造函數 ,可根據其參數個數的不同或參數類型的不同來區分它們 即構造函數的重載。構造函數的功能主要用于在類的對象創建時定義初始化的狀態。

    簡單地說構造函數是類函數,函數名與類名完全相同,無返回值


    (資料圖片僅供參考)

    構造函數屬于類的成員函數,除了具有一般成員函數的特點外,還具有自己的特點:

    (1)是類的一個特殊的成員函數,函數名與類名相同;

    (2)訪問屬性應該是public;

    (3)功能是初始化對象,在構造函數中一般不作初始化以外的事情;

    (4)可以在類內定義,也可在類外定義;

    (5)無函數返回類型,注意:什么也不寫,也不可寫為void;

    (6)程序運行時,當對象被創建后,該對象所屬的類的構造函數自動被調用,在該對象生存期中也只調用這一次;

    (7)可以重載

    類對象實例化前先要調用類成員函數.1,函數特征:函數名和類名相同;2,函數沒有返回值;3,函數可以重載;構造函數的作用一般是初始化一些類成員變量.

    如果沒有自己定義的構造函數,那系統會自動調用無參數的default構造函數,此函數什么也不做.

    另外析構函數是不可以重載的.

    二、什么叫構造函數

    簡單地說構造函數是類函數,函數名與類名完全相同,無返回值

    構造函數屬于類的成員函數,除了具有一般成員函數的特點外,還具有自己的特點:

    (1)是類的一個特殊的成員函數,函數名與類名相同;

    (2)訪問屬性應該是public;

    (3)功能是初始化對象,在構造函數中一般不作初始化以外的事情;

    (4)可以在類內定義,也可在類外定義;

    (5)無函數返回類型,注意:什么也不寫,也不可寫為void;

    (6)程序運行時,當對象被創建后,該對象所屬的類的構造函數自動被調用,在該對象生存期中也只調用這一次;

    (7)可以重載

    構造函數 - 簡介

    構造函數 是一種特殊的方法 主要用來在創建對象時初始化對象 即為對象成員變量賦初始值

    總與new運算符一起使用在創建對象的語句中 特別的一個類可以有多個構造函數 可根據其參數個數的不同或參數類型的不同來區分它們 即構造函數的重載

    構造函數 - 構造函數與其他方法的區別

    1.構造函數的命名必須和類名完全相同;而一般方法則不能和類名相同.

    2.構造函數的功能主要用于在類的對象創建時定義初始化的狀態.它沒有返回值,也不能用void來修飾.這就保證了它不僅什么也不用自動返回,而且根本不能有任何選擇.而其他方法都有返回值.即使是void返回值,盡管方法體本身不會自動返回什么,但仍然可以讓它返回一些東西,而這些東西可能是不安全的.

    3.構造函數不能被直接調用,必須通過new運算符在創建對象時才會自動調用,一般方法在程序執行到它的時候被調用.

    4.當定義一個類的時候,通常情況下都會顯示該類的構造函數,并在函數中指定初始化的工作也可省略,不過Java編譯器會提供一個默認的構造函數.此默認構造函數是不帶參數的.而一般方法不存在這一特點

    5當一個類只定義了私有的構造函數,將無法通過new關鍵字來創建其對象,當一個類沒有定義任何構造函數,C#編譯器會為其自動生成一個默認的無參的構造函數。

    構造函數 - C++中的構造函數

    C++的構造函數定義格式為: 構造函數

    class

    {

    public:

    (參數表)

    //...(還可以聲明其它成員函數)

    };

    ::(參數表)

    {

    //函數體

    }

    如以下定義是合法的:

    class T

    {

    public:

    T(int a=0){i=a;}//構造函數允許直接寫在類定義內,也允許有參數表。

    private:int i;

    };

    當程序中沒有析構函數時,系統會自動生成以下構造函數:

    ::(){},即不執行任何操作。

    構造函數 - C++例子

    //注意若將本代碼直接復制進編譯器,可能會報錯,原因是網頁生成時會在代碼前加一個中文占位符

    //最好將代碼再寫一次

    #include

    using namespace std;

    class time

    {

    public:

    time() //constructor.構造函數

    {

    hour=0;

    minute=0;

    sec=0;

    }

    void set_time();

    void show_time();

    private:

    int hour;

    int minute;

    int sec;

    };

    int main()

    {

    class time t1;

    t1.show_time();

    t1.set_time();

    t1.show_time();

    return 0;

    }

    void time::set_time()

    {

    cin >>hour;

    cin >>minute;

    cin >>sec;

    }

    void time::show_time()

    { cout<}

    程序運行情況:

    0:0:0

    10 11 11 回車

    10:11:11

    任何時候,只要創建類或結構,就會調用它的構造函數。類或結構可能有多個接受不同參數的構造函數。構造函數使得程序員可設置默認值、限制實例化以及編寫靈活且便于閱讀的代碼。

    JAVA示例代碼:

    public class UserManagerImpl implements UserManager {

    private UserDao userDao;

    public UserManagerImpl(UserDao userDao){

    this.userDao=userDao;

    }

    public void save(String username,String password){

    this.userDao.save(username, password);

    }

    }

    PHP中的構造函數

    構造函數的聲明與其它操作的聲明一樣,只是其名稱必須是兩個下劃線__construct( )。這是PHP5中的變化;PHP4的版本中,構造函數的名稱必須與類名相同。為了向下兼容,如果一個類中沒有名為__construct( )的方法,PHP將搜索一個與類名相同的方法。

    格式:function __construct ( [參數] ) { ... ... }

    例子:

    class person{

    public $name;

    public $age;

    function _ _construct(){ // 構造函數

    $this->name="lisi";

    $this->age=28;

    }

    function say(){

    echo "my name is ".$this->name."

    ";

    echo "my age is ".$this->age."

    ";

    }

    }

    $per=new person();

    $per->say();

    $per->name="zhangsan";

    $per->age=26;

    $per->say();

    ?>

    C#例子

    構造函數是在創建給定類型的對象時執行的類方法。構造函數具有與類相同的名稱,它通常初始化新對象的數據成員。

    在下面的示例中,使用一個簡單的構造函數定義了名為 Taxi 的類。然后使用 new 運算符來實例化該類。在為新對象分配內存之后,new 運算符立即調用 Taxi 構造函數。

    public class Taxi{ public bool isInitialized; public Taxi() { isInitialized = true; }}class TestTaxi{ static void Main() { Taxi t = new Taxi(); System.Console.WriteLine(t.isInitialized); }}

    以上就是小編對于構造函數的相關信息的介紹,希望能對大家有所幫助。

    [責任編輯:linlin]

    標簽:

    相關文章

    評論排行
    熱門話題
    最近更新
    亚洲av第一网站久章草| 亚洲人成人网站18禁| 高清在线亚洲精品国产二区| 中文字幕亚洲综合久久综合| 亚洲六月丁香六月婷婷色伊人| 18gay台湾男同亚洲男同| 亚洲精品国产成人99久久| 亚洲bt加勒比一区二区| 亚洲国产精品无码久久一线| 亚洲精品乱码久久久久久蜜桃不卡| 337p日本欧洲亚洲大胆裸体艺术| 久久影院亚洲一区| 亚洲性猛交XXXX| 国产成人亚洲综合色影视| 亚洲国产精品一区二区第一页 | 亚洲综合另类小说色区| 国产aⅴ无码专区亚洲av麻豆| 亚洲午夜福利在线观看| 国产亚洲真人做受在线观看| 亚洲精品午夜无码电影网| 久久亚洲精品视频| 无码乱人伦一区二区亚洲| 亚洲伦另类中文字幕| 亚洲综合小说久久另类区| 亚洲人成网站18禁止久久影院| avtt天堂网手机版亚洲| 亚洲色大成网站www尤物| 亚洲av第一网站久章草| 亚洲精品国产精品乱码不卞| 亚洲自偷自偷图片| 婷婷亚洲久悠悠色悠在线播放| 99久久亚洲精品无码毛片| 91午夜精品亚洲一区二区三区| 国产精品亚洲精品| 国产亚洲精品AAAA片APP | 亚洲av无码专区在线观看素人| 亚洲爽爽一区二区三区| 亚洲色成人中文字幕网站| 久久亚洲一区二区| 亚洲国产成人精品青青草原| 国产精品亚洲自在线播放页码|