构造函式

构造函式

构造函式是一个电脑术语,是一种特殊的方法,主要用来在建立对象时初始化对象,构造函式的命名必须和类名完全相同,而一般方法则不能和类名相同。

  • 中文名称
    构造函式
  • 外文名称
    constructor
  • 作    用
    为对象成员变数赋初始值
  • 语    句
    new运算符一起使用

基本介绍

​构造函式是一个电脑术语,是一种特殊的方法,主要用来在建立对象时初始化对象,构造函式的命名必须和类名完全相同,而一般方法则不能和类名相同。

函式特点

构造区别

1.构造函式的命名必须和类名完全相同;在java中普通函式可以和构造函式同名,但是必须带有返回值。

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

3.构造函式不能被直接调用,必须通过new运算符在建立对象时才会自动调用;而一般的方法是在程式执行到它的时候被调用的。

4.当定义一个类的时候,通常情况下都会显示该类的构造函式,并在函式中指定初始化的工作也可省略,不过Java编译器会提供一个默认的构造函式.此默认构造函式是不带参数的。而一般的方法不存在这一特点。

5.当一个类只定义了私有的构造函式,将无法通过new关键字来建立其对象,当一个类没有定义任何构造函式,C#编译器会为其自动生成一个默认的无参的构造函式。

构造函式

C++语言为类提供的构造函式可自动完成对象的初始化任务,全局对象和静态对象的构造函式在main()函式执行之前就被调用,局部静态对象的构造函式是当程式第一次执行到相应语句时才被调用。然而给出一个外部对象的引用性声明时,并不调用相应的构造函式,因为这个外部对象只是引用在其他地方声明的对象,并没有真正地建立一个对象。

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

class <类名>

{

public:

<类名>(参数表)

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

};

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

{

//函式体

}

如以下定义是合法的:

class T

{

public:

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

private:int i;

};

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

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

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

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

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

构造函式

函式示例

构造函式例子

//注意若将本代码直接复製进编译器,可能会报错,原因是网页生成时会在代码前加一个中文佔位符

//最好将代码再写一次

#include

using namespace std;

class time

{

public:

time() //constructor.构造函式

{

hour=0;

minute=0;

sec=0;

}

void set_time();

void show_time();

private:

int hour;

int minute;

int sec;

};

int main()

{

class time t1;

t1.show_time();

t1.set_time();

t1.show_time();

return 0;

}

void time::set_time()

{

cin >>hour;

cin >>minute;

cin >>sec;

}

void time::show_time()

{ cout<

}

程式运行情况:

0:0:0

10 11 11 回车

10:11:11

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

PHP构造函式例子

构造函式的声明与其它操作的声明一样,只是其名称必须是两个下划线__construct( )。这是PHP5中的变化;PHP4的版本中,构造函式的名称必须与类名相同。为了向下兼容,如果一个类中没有名为__construct( )的方法,PHP将搜寻一个与类名相同的方法。

格式:function __construct ( [参数] ) { ... ... }

例子:

class person{

public $name;

public $age;

function _ _construct(){ // 构造函式

$this->name="lisi";

$this->age=28;

}

function say(){

echo "my name is ".$this->name."
";

echo "my age is ".$this->age."

";

}

}

$per=new person();

$per->say();

$per->name="zhangsan";

$per->age=26;

$per->say();

?>

C构造函式例子

构造函式是在建立给定类型的对象时执行的类方法。构造函式具有与类相同的名称,它通常初始化新对象的资料成员。

在下面的示例中,使用一个简单的构造函式定义了名为 Taxi 的类。然后使用 new 运算符来实例化该类。在为新对象分配记忆体之后,new 运算符立即调用 Taxi 构造函式。

publicclass Taxi

{

publicbool isInitialized;

public Taxi()

{

isInitialized = true;

}

}

class TestTaxi

{

staticvoid Main()

{

Taxi t = new Taxi();

System.Console.WriteLine(t.isInitialized);

}

}

JAVA构造函式例子

public class UserManagerImpl implements UserManager {

private UserDao userDao;

public UserManagerImpl(UserDao userDao){

this.userDao=userDao;

}

public void save(String username,String password){

this.userDao.save(username, password);

}

}

注意: 由于Java不允许像C++那样为函式的参数提供缺省值, 因此在构造函式中也不能使用缺省值.    

相关词条

相关搜索

其它词条