logo头像

不忘初心,奋力前行

第四章:类与对象(二)构造函数

本文于1861天之前发表,文中内容可能已经过时,如有问题,请联系我。

构造函数的作用 在对象被创建时使用特定的值构造对象,将对象初始化为一个特定的初始状态。 例如:希望在构造一个Clock类对象时,将初试时间设为0:0:0,就可以通过构造函数来设置。 构造函数的形式 函数名与类名相同; 不能定义返回值类型,也不能有return语句; 可以有形式参数,也可以没有形式参数; 可以是内联函数; 可以重载; 可以带默认参数值。 构造函数的调用时机 在对象创建时被自动调用 例如: Clock myClock(0,0,0); 默认构造函数 调用时可以不需要实参的构造函数 参数表为空的构造函数 全部参数都有默认值的构造函数 下面两个都是默认构造函数,如在类中同时出现,将产生编译错误: Clock(); Clock(int newH=0,int newM=0,int newS=0); 隐含生成的构造函数 如果程序中未定义构造函数,编译器将在需要时自动生成一个默认构造函数 参数列表为空,不为数据成员设置初始值; 如果类内定义了成员的初始值,则使用内类定义的初始值; 如果没有定义类内的初始值,则以默认方式初始化; 基本类型的数据默认初始化的值是不确定的。 “=default” 如果程序中未定义构造函数,默认情况下编译器就不再隐含生成默认构造函数。如果此时依然希望编译器隐含生成默认构造函数,可以使用“=default”。 例如 class Clock { public: Clock() =default; //指示编译器提供默认构造函数 Clock(int newH, int newM, int newS); //构造函数 private: int hour, minute, second; }; 例1: //类定义 class Clock { public: Clock(int newH,int newM,int newS);//构造函数 void setTime(int newH, int newM, int newS); void showTime(); private: int hour, minute, second; }; //构造函数的实现: Clock::Clock(int newH,int newM,int newS): hour(newH),minute(newM), second(newS) { } //简单的赋值,不必要在大括号里面赋值。 //其它函数实现同例4_1 int main() { Clock c(0,0,0); //自动调用构造函数 c.showTime(); return 0; }

支付宝打赏 微信打赏 QQ钱包打赏

感觉不错?欢迎给我 打个赏~我将不胜感激!