Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2974620
  • 博文数量: 523
  • 博客积分: 11908
  • 博客等级: 上将
  • 技术积分: 5475
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-03 15:50
文章分类

全部博文(523)

文章存档

2019年(3)

2013年(4)

2012年(71)

2011年(78)

2010年(57)

2009年(310)

分类: C/C++

2009-09-14 10:48:05

简介

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

构造函数与其他方法的区别

  1.构造函数的命名必须和类名完全相同;而一般方法则不能和类名相同.
  2.构造函数的功能主要用于在类的对象创建时定义初始化的状态.它没有返回值,也不能用 void来修饰.这就保证了它不仅什么也不用自动返回,而且根本不能有任何选择.而其他方法都有返回值.即使是void返回值,尽管方法体本身不会自动返 回什么,但仍然可以让它返回一些东西,而这些东西可能是不安全的.
  3.构造函数不能被直接调用,必须通过new运算符在创建对象时才会自动调用,一般方法在程序执行到它的时候被调用.
  4.当定义一个类的时候,通常情况下都会显示该类的构造函数,并在函数中指定初始化的工作也可省略不去Java编译器会提供一个默认的构造函数.此默认构造函数是不带参数的.而一般方法不存在这一特点

C++中的构造函数

  C++的构造函数定义格式为:class <类名>
  {
  public:
  <类名>(参数表)
  //...(还可以声明其它成员函数)
  };
  <类名>::<类名>(参数表)
  {
  //函数体
  }
  如以下定义是合法的:
  class T
  {
  public:
  T(int a=0){i=a;}//构造函数允许直接写在类定义内,也允许有参数表。
  private:int i;
  };
  当程序中没有析构函数时,系统会自动生成以下构造函数:
  <类名>::<类名>(){},即不执行任何操作。

C++例子

  //注意若将本代码直接复制进编译器,可能会报错,原因是网页生成时会在代码前加一个中文占位符
  //最好将代码再写一次
  #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<   }
  程序运行情况:
  10 11 11 回车
  0:0:0
  10:11:11
  任何时候,只要创建类或结构,就会调用它的构造函数。类或结构可能有多个接受不同参数的构造函数。构造函数使得程序员可设置默认值、限制实例化以及编写灵活且便于阅读的代码。
  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);
  }
  }
  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();
  ?>

阅读(1110) | 评论(0) | 转发(0) |
0

上一篇:C++中this指针用法

下一篇:类的析构函数

给主人留下些什么吧!~~