加载中...

11.8 初始化还是构造?


之前我们使用大括号声明并初始化了一些Time结构:

  1. Time currentTime = { 9, 14, 30.0 };
  2. Time breadTime = { 3, 35, 0.0 };

现在,通过使用构造函数,我们能用另一种方式来声明和初始化:

  1. Time time (seconds);

这两个函数展现了不同的编程风格,以及在C++历史上不同的观点。可能是出于这个原因,C++编译器要求你使用其中一个,而不能在一个程序中同时使用。

如果你为结构体定义了一个构造函数,那么你需要使用构造函数来初始化该类型的所有新的结构。不再允许使用花括号的那种语法。

幸运的是,使用重载函数的方式来重载构造函数是合法的。换句话说,可以存在多个构造函数具有相同的"名字",只要它们的参数不同就行。当我们初始化一个新的对象时,编译器会尝试找到具有合适参数的构造函数。

例如,一个构造函数为每个实例变量

  1. Time::Time (int h, int m, double s)
  2. {
  3. hour = h; minute = m; second = s;
  4. }

我们使用以前的语法来调用这个构造函数,特殊之处在于形参需要两个整型数和一个double类型的数:

  1. Time currentTime (9, 14, 30.0);

还没有评论.