本篇文章為大家展示了c++中如何使用構(gòu)造函數(shù),內(nèi)容簡明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
目前創(chuàng)新互聯(lián)公司已為超過千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站改版維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、遼陽網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
一、構(gòu)造函數(shù):
1、什么是構(gòu)造函數(shù)?
關(guān)于這個(gè)構(gòu)造函數(shù),簡單理解就是在一個(gè)類中,有一個(gè)函數(shù),它的函數(shù)名稱和類名同名,而且這個(gè)構(gòu)造函數(shù)沒有返回值類型的說法( Test()這個(gè)函數(shù)就是構(gòu)造函數(shù)了。):
#include
class Test:
{
public:
Test()
{
printf("Test()\n");
}
}
2、構(gòu)造函數(shù)調(diào)用:
(1)一般情況下,構(gòu)造函數(shù)在定義時(shí)自動(dòng)被調(diào)用(主要作用就是自動(dòng)去初始化類中的屬性,這個(gè)屬性通俗一點(diǎn)來說,就是我們所說的變量。而且這里的自動(dòng)的意思,就是說當(dāng)你創(chuàng)建了一個(gè)對(duì)象后,它就會(huì)自動(dòng)調(diào)用構(gòu)造函數(shù),不用你再去main函數(shù)里面寫構(gòu)造函數(shù)了。):
#include
class Test
{
public:
Test()
{
printf("Test()\n");
}
};
int main()
{
Test t; // 調(diào)用 Test()
return 0;
}
演示結(jié)果如下:
root@txp-virtual-machine:/home/txp/c++# ./a.out
Test()
(2)一些特殊情況下,需要手工來調(diào)用構(gòu)造函數(shù)(這個(gè)在下面帶參數(shù)的構(gòu)造函數(shù)里面會(huì)有一個(gè)案例分析)
二、帶參數(shù)的構(gòu)造函數(shù):
(1)構(gòu)造函數(shù)可以根據(jù)需要定義參數(shù)。
class Test
{
public:
Test(int v)
{
}
};
(2)一個(gè)類中可以存在多個(gè)重載的構(gòu)造函數(shù)(什么重載函數(shù),簡單來說,可以同函數(shù)名,但是它的傳參類型或者返回類型不同就是重載函數(shù)了。)下面來看一個(gè)具體帶參構(gòu)造函數(shù)案例:
#include
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;
}
演示結(jié)果如下:
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
三、實(shí)戰(zhàn)案例:
需求:開發(fā)一個(gè)數(shù)組類解決原生數(shù)組的安全性問題:
——提供函數(shù)獲取數(shù)組長度
——提供函數(shù)獲取數(shù)組元素
——提供函數(shù)設(shè)置數(shù)組元素
接下來我們先來寫頭文件IntArray.h,數(shù)組類就包含在里面:
#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,也就是類的方法具體實(shí)現(xiàn)了:
#include "IntArray.h"
IntArray::IntArray(int len)
{
m_pointer = new int[len];
for(int i=0; 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中來創(chuàng)建對(duì)象,來實(shí)現(xiàn)所需功能:
#include
#include "IntArray.h"
int main()
{
IntArray a(5);
for(int i=0; i {
a.set(i, i + 1);
}
for(int i=0; i {
int value = 0;
if( a.get(i, value) )
{
printf("a[%d] = %d\n", i, value);
}
}
a.free();
return 0;
}
最終演示結(jié)果:
root@txp-virtual-machine:/home/txp/c++# ./a.out
a[0] = 1
a[1] = 2
a[2] = 3
a[3] = 4
a[4] = 5
小結(jié):
——構(gòu)造函數(shù)可以根據(jù)需要定義參數(shù)
——構(gòu)造函數(shù)之間可以存在重載關(guān)系
——構(gòu)造函數(shù)遵循C++中重載函數(shù)的規(guī)則
——對(duì)象定義時(shí)會(huì)觸發(fā)構(gòu)造函數(shù)的調(diào)用
——在一些情況下可以手動(dòng)調(diào)用構(gòu)造函數(shù)
上述內(nèi)容就是c++中如何使用構(gòu)造函數(shù),你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。