亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

c++中如何使用構造函數

發布時間:2021-07-28 11:36:56 來源:億速云 閱讀:148 作者:Leah 欄目:大數據

本篇文章為大家展示了c++中如何使用構造函數,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。


一、構造函數:

1、什么是構造函數?

關于這個構造函數,簡單理解就是在一個類中,有一個函數,它的函數名稱和類名同名,而且這個構造函數沒有返回值類型的說法(  Test()這個函數就是構造函數了。):

#include <stdio.h>

class Test:
{
  public:
       Test()
       {
         printf("Test()\n");
       }
}
 

2、構造函數調用:

(1)一般情況下,構造函數在定義時自動被調用(主要作用就是自動去初始化類中的屬性,這個屬性通俗一點來說,就是我們所說的變量。而且這里的自動的意思,就是說當你創建了一個對象后,它就會自動調用構造函數,不用你再去main函數里面寫構造函數了。):

#include <stdio.h>

class Test
{
public:
   Test()
   {
       printf("Test()\n");
   }
   
};

int main()
{
   Test t;      // 調用 Test()
   return 0;
}

 

演示結果如下:

root@txp-virtual-machine:/home/txp/c++# ./a.out
Test()
 

(2)一些特殊情況下,需要手工來調用構造函數(這個在下面帶參數的構造函數里面會有一個案例分析)

二、帶參數的構造函數:

(1)構造函數可以根據需要定義參數。

class Test
{
   public:
         Test(int v)
         {
         
         }
};

 

(2)一個類中可以存在多個重載的構造函數(什么重載函數,簡單來說,可以同函數名,但是它的傳參類型或者返回類型不同就是重載函數了。)下面來看一個具體帶參構造函數案例:

#include <stdio.h>

class Test
{
private:
   int m_value;
public:
   Test()
   {
       printf("Test()\n");
       
       m_value = 0;
   }
   Test(int v)
   {
       printf("Test(int v), v = %d\n", v);
       
       m_value = v;
   }
   int getValue()
   {
       return m_value;
   }
};

int main()
{
   Test ta[3] = {Test(), Test(1), Test(2)};
   
   for(int i=0; i<3; i++)
   {
       printf("ta[%d].getValue() = %d\n", i , ta[i].getValue());
   }
   
   Test t = Test(100);
   
   printf("t.getValue() = %d\n", t.getValue());
   
   return 0;
}

 

演示結果如下:

root@txp-virtual-machine:/home/txp/c++# ./a.out
Test()
Test(int v), v = 1
Test(int v), v = 2
ta[0].getValue() = 0
ta[1].getValue() = 1
ta[2].getValue() = 2
Test(int v), v = 100
t.getValue() = 100

 

三、實戰案例:

需求:開發一個數組類解決原生數組的安全性問題:

——提供函數獲取數組長度

——提供函數獲取數組元素

——提供函數設置數組元素
 

接下來我們先來寫頭文件IntArray.h,數組類就包含在里面:

#ifndef _INTARRAY_H_
#define _INTARRAY_H_

class IntArray
{
  private:
        int m_length;
        int* m_pointer;
  public:
        IntArray(int len);
        int length();
        bool get(int index, int& value);
        bool set(int index ,int value);
        void free();
};

#endif

 

然后接下來寫IntArray.cpp,也就是類的方法具體實現了:

#include "IntArray.h"

IntArray::IntArray(int len)
{
   m_pointer = new int[len];
   
   for(int i=0; i<len; i++)
   {
       m_pointer[i] = 0;
   }
   
   m_length = len;
}

int IntArray::length()
{
   return m_length;
}

bool IntArray::get(int index, int& value)
{
   bool ret = (0 <= index) && (index < length());
   
   if( ret )
   {
       value = m_pointer[index];
   }
   
   return ret;
}

bool IntArray::set(int index, int value)
{
   bool ret = (0 <= index) && (index < length());
   
   if( ret )
   {
       m_pointer[index] = value;
   }
   
   return ret;
}

void IntArray::free()
{
   delete[]m_pointer;
}
 

最后就在main中來創建對象,來實現所需功能:

#include <stdio.h>
#include "IntArray.h"

int main()
{
   IntArray a(5);
   
   for(int i=0; i<a.length(); i++)
   {
       a.set(i, i + 1);
   }
   
   for(int i=0; i<a.length(); i++)
   {
       int value = 0;
       
       if( a.get(i, value) )
       {
           printf("a[%d] = %d\n", i, value);
       }
   }
   
   a.free();
   
   return 0;
}

 

最終演示結果:

root@txp-virtual-machine:/home/txp/c++# ./a.out
a[0] = 1
a[1] = 2
a[2] = 3
a[3] = 4
a[4] = 5

 

小結:

——構造函數可以根據需要定義參數

——構造函數之間可以存在重載關系

——構造函數遵循C++中重載函數的規則

——對象定義時會觸發構造函數的調用

——在一些情況下可以手動調用構造函數

 

上述內容就是c++中如何使用構造函數,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

都江堰市| 博湖县| 客服| 孝义市| 淮北市| 大连市| 扎兰屯市| 马鞍山市| 河津市| 峨山| 宜宾市| 林周县| 长垣县| 建昌县| 自治县| 苍山县| 克东县| 咸阳市| 齐齐哈尔市| 米泉市| 繁昌县| 皮山县| 昌图县| 长汀县| 五莲县| 横峰县| 黄梅县| 长葛市| 蕉岭县| 怀化市| 望城县| 龙泉市| 高邑县| 临夏市| 盈江县| 苍山县| 寻甸| 巫溪县| 乌兰浩特市| 苏尼特右旗| 武川县|