§8.2函数重载 例:参数类型不同 float abs( float x) double abs( double x) 函数调用:abs(5); error 因为系统不知应将5转换成foat,还是 double
§8.2 函数重载 例:参数类型不同 float abs(float x) { …… } double abs(double x) { …… } 函数调用:abs(5); //error! 因为系统不知应将5转换成float, 还是double
§8.2函数重载 在函数调用时,如找不到与实参完全匹配的函数 原型,C+的隐式类型转换如能将一个类型转为能与 函数原型匹配,则选择调用该重载函数 例 函数原型: int fund( double d 函数调用:fun(A) ∥/系统自动将“A(字符型)转换成 double
§8.2 函数重载 在函数调用时,如找不到与实参完全匹配的函数 原型,C++的隐式类型转换如能将一个类型转为能与 函数原型匹配,则选择调用该重载函数 例: 函数原型:int func(double d); 函数调用:func(‘A’); //系统自动将‘A’(字符型)转换成double
§8.3拷贝构造函数 构造对象的两个特殊构造函数 1.默认构造函数(复习) 2.拷贝构造函数
§8.3 拷贝构造函数 构造对象的两个特殊构造函数 1. 默认构造函数(复习) 2. 拷贝构造函数
§8.3拷贝构造函数 ◆默认构造函数 例:Aaa;∥当定义一个对象而不给它任何初始 值时,系统就要调用默认构造函数 多A·默认构造函数 参数表为空或所有参数都有默认值的构造 函数 如:A(),或A(inti=0,intj=5)
§8.3 拷贝构造函数 默认构造函数 例:A aa; //当定义一个对象而不给它任何初始 值时,系统就要调用默认构造函数 默认构造函数: 参数表为空或所有参数都有默认值的构造 函数 如:A( ); 或 A(int i=0, int j=5);
§8.3拷贝构造函数 遇下列情况系统自动调用默认构造函数来构造对象 (1)直接定义一个对象而没有给初始值 例:A aa (2)用new动态申请的对象而没有给初始值 例:A*pa=newA; 或:〔A*pa pa=new A (3)定义了一个对象数组 例: A array[10]
§8.3 拷贝构造函数 遇下列情况系统自动调用默认构造函数来构造对象 ⑴ 直接定义一个对象而没有给初始值 例:A aa; ⑵ 用new动态申请的对象而没有给初始值 例:A *pa=new A; 或: A *pa; pa=new A; ⑶ 定义了一个对象数组 例:A array[10];