1.构造函数
- 构造函数可以根据需要定义参数
- 一个类中可以存在多个重载的构造函数
友情提示:
对象的定义
:申请对象的空间并调用构造函数
对象声明
:告诉编译器存在这样一个对象
构造函数在定义对象时会自动调用
18-1 带参数的构造函数
#include <iostream>
using namespace std;
class cTest
{
public:
cTest()
{
this->i = 1;
cout << "cTest() begin" << endl;
}
cTest(int iVal)
{
this->i = iVal;
cout << "cTest(int iVal) begin" << endl;
}
private:
int i;
};
int main()
{
cTest t;
cTest t1(2);
return 0;
}
结果:
18-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;
}
运行结果
v), v = 2
ta[0].getValue() = 0
ta[1].getValue() = 1
ta[2].getValue() = 2
Test(int v), v = 100
t.getValue() = 100
3.数组类
intArray.h
#pragma once
class intArray
{
private:
int iArrayLen;
int* piArray;
public:
intArray();
intArray(int len);
int getLength();
bool get(int index,int &value);
bool set(int index,int value);
~intArray();
};
intArray.cpp
#include "intArray.h"
intArray::intArray()
{
}
intArray::intArray(int iLen)
{
piArray = new int[iLen];
for (int i = 0; i < iLen; i++)
{
piArray[i] = 0;
}
iArrayLen = iLen;
}
int intArray::getLength()
{
return iArrayLen;
}
bool intArray::get(int index, int& value)
{
if(index >= 0 && index < getLength())
{
value = piArray[index];
return true;
}
else
{
return false;
}
}
bool intArray::set(int index, int value)
{
if (index >= 0 && index < getLength())
{
piArray[index] = value;
return true;
}
else
{
return false;
}
}
intArray::~intArray()
{
delete[]piArray;
}
main.cpp
#include <iostream>
#include "intArray.h"
using namespace std;
int main()
{
intArray iArray(5);
int iValue;
if (iArray.set(4, 9) && iArray.get(4, iValue))
{
printf("%d\n",iValue);
}
for (int i = 0; i < iArray.getLength(); i++)
{
iArray.get(i, iValue);
printf("%d %d\n", i, iValue);
}
return 0;
}
结果: