11.8 初始化还是构造?

最后更新于:2022-04-01 06:23:19

之前我们使用大括号声明并初始化了一些Time结构: ~~~ Time currentTime = { 9, 14, 30.0 }; Time breadTime = { 3, 35, 0.0 }; ~~~ 现在,通过使用构造函数,我们能用另一种方式来声明和初始化: ~~~ Time time (seconds); ~~~ 这两个函数展现了不同的编程风格,以及在C++历史上不同的观点。可能是出于这个原因,C++编译器要求你使用其中一个,而不能在一个程序中同时使用。 如果你为结构体定义了一个构造函数,那么你需要使用构造函数来初始化该类型的所有新的结构。不再允许使用花括号的那种语法。 幸运的是,使用重载函数的方式来重载构造函数是合法的。换句话说,可以存在多个构造函数具有相同的"名字",只要它们的参数不同就行。当我们初始化一个新的对象时,编译器会尝试找到具有合适参数的构造函数。 例如,一个构造函数为每个实例变量 ~~~ Time::Time (int h, int m, double s) { hour = h; minute = m; second = s; } ~~~ 我们使用以前的语法来调用这个构造函数,特殊之处在于形参需要两个整型数和一个double类型的数: ~~~ Time currentTime (9, 14, 30.0); ~~~
';