C++学习笔记(构造函数)

我们通常在定义变量的时候会对其初始化,同样,当我们定义了对象之后,也希望对对象进行初始化,对其赋值。但是我们知道类中的数据成员是私有的,不能像普通变量那样对其赋值。那么该怎样对类的对象初始化呢?对此,我们先给出如下的定义,然后再一步步解释程序的含义。

#include<iostream>
using namespace std;
class Test
{

public:

Test( )//构造函数1

{

    num=0;

}

Test(int Num)//构造函数2

{

    num=Num;

}

private://数据成员
int num;
};
int main()
{

Test t1;//创建对象t1,并调用构造函数1为t1.num赋值为0

        Test t2(10);//创建对象t2,并调用构造函数2为t2.num赋值为10

}

在主函数中我们首先创建了t1对象,为了实现在创建对象的时候对其初始化,C++提供了专门用于对对象初始化的函数——构造函数。构造函数的函数名与类名相同,而且该函数没有返回值(如上的构造函数1和构造函数2)。程序创建对象的时候,就会自动调用构造函数对对象初始化,因此,t1对象会被初始化为0(调用构造函数1)。主程序的第二行创建了另外一个对象t2,t2对象会被初始化为10(调用构造函数2)。由此,我们可以知道,构造函数的个数可以不止一个(函数的重载)。当然,我们可以在类中对函数进行声明,在类外对函数进行定义,但是,如果在类外对函数定义时,就要指出该函数属于哪个类(复杂程序不止一个类)。如下为在类外定义函数的方法:

#include<iostream>
using namespace std;
class Test
{
public:
Test();//构造函数1
Test(int Num);//构造函数2
private://数据成员
int num;
};
Test::Test()//类外定义构造函数1
{
num=0;
}
Test::Test(int Num)//类外定义构造函数2
{
num=Num;
}
void main()
{
Test t1;//调用构造函数1
Test t2(10);//调用构造函数2

}

在类外定义构造函数的时候通过::来指明函数属于哪个类。通常,假如我们不编写构造函数,系统会自动调用默认的构造函数,默认的构造函数不会做任何工作。为了验证t1对象调用构造函数1,t2对象调用构造函数2,我们将程序改为如下的形式:

#include<iostream>
using namespace std;
class Test
{
public:
Test();
Test(int Num);
private:
int num;
};
Test::Test()
{
num=0;
cout<<"construct function 1"<<endl;
}
Test::Test(int Num)
{
num=Num;
cout<<"construct function 2"<<endl;
}
void main()
{
Test t1;
Test t2(10);

}

然后再vc上运行该程序,结果如下:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值