c++里, 构造函数是什么概念?

来源:百度知道 编辑:UC知道 时间:2024/09/21 03:21:38
我理解构造函数有疑问。比如这一段吧:

#include "random.h"
#include "tcp.h"
#include "telnet.h"

extern double tcplib_telnet_interarrival();

static class TelnetAppClass : public TclClass {
public:
TelnetAppClass() : TclClass("Application/Telnet") {}
TclObject* create(int, const char*const*) {
return (new TelnetApp);
}
} class_app_telnet;

TelnetApp::TelnetApp() : running_(0), timer_(this)
{
bind("interval_", &interval_);
}

void TelnetAppTimer::expire(Event*)
{
t_->timeout();
}

void TelnetApp::start()
{
running_ = 1;
double t = next();
timer_.sched(t);
}

void TelnetApp::stop()
{
running_ = 0;
}

请问哪个是构造函数?

构造函数 ,是一种特殊的方法,主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中,特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。
  如果一个类中没有定义任何的构造函数,那么编译器只有在以下三种情况,才会提供默认的构造函数:
  1、如果类有虚拟成员函数或者虚拟继承父类(即有虚拟基类)时;
  2、如果类的基类有构造函数(可以是用户定义的构造函数,或编译器提供的默认构造函数);
  3、在类中的所有非静态的对象数据成员,它们对应的类中有构造函数(可以是用户定义的构造函数,或编译器提供的默认构造函数)。

1 和类名相同
2 没有返回值类型声明
还有除了以上说的俩点,还要注意:
二.构造函数的定义

构造函数的名字不能随便起,必须让编译器认得出才可以被自动执行。它的命名方法既简单又合理:让构造函数与类同名。除了名字外,构造函数的另一个特别之处是没有返回值类型,这与返回值类型为void的函数不同。如果它有返回值类型,那么编译器将不知所措。在你可以访问一个类的方法、属性或任何其它东西之前, 第一条执行的语句是包含有相应类的构造函数。甚至你自己不写一个构造函数,也会有一个缺省构造函数提供给你。

class TestClass
{
public TestClass(): base() {} // 由CLR提供
}

下面列举了几种类型的构造函数

1)缺省构造函数

class TestClass
{
public TestClass

}

希望可以帮上你的忙哦

俩特点..
1 和类名相同
2 没有返回值类型声明

TelnetAppClass() : TclClass("Application/Telnet") {}
这个是构造函数,":"后面跟的是初始化参数列表