构造函数

来源:互联网 发布:网络验证破解 跳 编辑:程序博客网 时间:2024/05/18 00:10

构造函数

      构造函数是一种特殊的方法。主要用来创建对象时初始化对象。即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中 。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。构造函数的功能主要用于在类的对象创建时定义初始化的状态。

构造函数的特点

  1.函数名与类名相同。

   2..构造函数的功能主要用于在类的对象创建时定义初始化的状态。它没有返回值,也不能用void来修饰。这就保证了它不仅什么也不用自动返回,而且根本不能有任何选择。而其他方法都有返回值,即使是void返回值。尽管方法体本身不会自动返回什么,但仍然可以让它返回一些东西,而这些东西可能是不安全的。

   3.新对象被创建,由编译器自动调用,且在对象的生命期内仅调用一次。

   4.有初始化列表。

   5.构造函数可以重载,实参决定了那个函数被调用。

   6.构造函数不能用const来修饰。

   7.如果没有显式定义,编译器会自动生成一个构造函数。

   8.无参构造函数和带有缺省值得构造函数都认为是构造函数,并且缺省构造函数只能有一个。

   9.构造函数有回滚的效果,构造函数抛出异常时,构造的是一个不完整对象,会回滚,将此不完整对象的成员释放(c++)

C++构造函数  

   C++的构造函数定义格式为:

       class <类名>

{

public:

<类名>(参数表)

//...(还可以声明其它成员函数)

};

<类名>::<函数名>(参数表)

{

//函数体

}

如以下定义是合法的:

class T

{

public:

T(int a=0){i=a;}//构造函数允许直接写在类定义内,也允许有参数表。

private:int i;

};

如果一个类中没有定义任何的构造函数,那么编译器只有在以下三种情况,才会提供默认的构造函数:

1、如果类有虚拟成员函数或者虚拟继承父类(即有虚拟基类)时;

2、如果类的基类有构造函数(可以是用户定义的构造函数,或编译器提供的默认构造函数);

3、在类中的所有非静态的对象数据成员,它们对应的类中有构造函数(可以是用户定义的构造函数,或编译器提供的默认构造函数)。

<类名>::<类名>(){},即不执行任何操作。

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>

using namespace std;

class time

{public:

time()//constructor.构造函数

{hour=0;

minute=0;

sec=0;
}
void set_time();
void show_time();
private:
int hour,minute,sec;
};
int main()
{
class time t1;
t1.show_time();
t1.set_time();
t1.show_time();
return 0;
}
void time::set_time()

{

cin>>hour>>minute>>sec;
}
void time::show_time()
{
cout<<hour<<":"<<minute<<":"<<sec<<endl;
}

程序运行情况:

0:0:0

10 11 11 回车

10:11:11

任何时候,只要创建类或结构,就会调用它的构造函数。类或结构可能有多个接受不同参数的构造函数。构造函数使得程序员可设置默认值、限制实例化以及编写灵活且便于阅读的代码。




2 0