c++第13-14讲.pptVIP

  • 6
  • 0
  • 约1.6万字
  • 约 36页
  • 2016-08-15 发布于重庆
  • 举报
c第13-14讲

三 隐含使用转换构造函数 前面介绍的是在初始化时使用转换构造函数。除此之外编译器也可在需要将另一类型的数据项换算成(赋给)类对象时调用相应的转换构造函数。 例:设一函数,参数为complex对象。 void disp (complex c) 注:由于定义了complex转换构造函数,所以可以向这个函数的参数传递double值,float值或complex对象。 #includeiostream.h class complex { double real, imag; public: complex(double r=0.0,double i=0.0) {real=r;imag=i;} complex operator + (complex c2) {return complex(c2.real+real, c2.imag+imag);} void display() {cout(real, ;coutimag)endl; } }; void disp(complex c) {c.display();} void main() {complex c1(5,4),c2(2,10),c5(100), c4(12,4),c,c3; coutc1=; disp(c1);coutc2=; disp(c2); c3=c1+c2; coutc3=c1+c2=;c3.display(); c=c1+c2+c4; disp(c); c=c+c5; disp(c); c=c5+c; disp(c); disp(25.8); } 将本题与第10页的实现进行比较。 四 .初始化数组 有了复制构造函数和转换构造函数,使得对象数组的初始化可以多样化。 例: complex C(95,34) ; complex Ctable [5]= { C , //用对象初始化Ctable [0] complex t(15,94) //用临时对象初始化Ctable [1] 10 , //用整型初始化Ctable [2] 12.23 , //用float初始化Ctable [3] }; 构造函数中数据成员初始化的不同方法 #include iostream using namespace std; class Date { int day, month, year; public://构造函数,无参数,使用参数初始化表 Date():year(1900), month(1), day(1) { } Date(int yy, int mm=1, int dd=1); //构造函数,3个参数,2个有默认值 Date(Date d) //拷贝构造函数 { year = d.year; month = d.month; day = d.day; } void print_ymd(); }; Date::Date(int yy, int mm, int dd):year(yy), month(mm), day(dd) { } void Date::print_ymd() { cout year - month - day endl;} * int main() { Date date1; //使用无参数的构造函数创建日期类对象 cout date1:; date1.print_ymd(); Date date2(2006); //使用3参数的构造函数创建日期类对象,2个默认值 cout date2:; date2.print_ymd(); Date date3(2006, 4); //使用3参数的构造函数创建日期类对象,1个默认值 cout date3:; date3.print_ymd(); Date date4(2006, 4, 8); //使用3参数的构造函数创建日期类对象 cout date4:; date4.print_ymd(); Date date5(date4); //使用拷贝构造函数创建日期类对象 cout date5:; date5.print_ymd(); return 0; } 内容: 重 载 运 算 符 复制构造函数 转换构造函数 第十四章 重载 复制 转换 §14.1 重载运算符 重载:函数的重载(前面已经介绍过)和运算符的重载 重载也是多态性 重载运算符:可以使得程序更加简洁,使表达式更加

文档评论(0)

1亿VIP精品文档

相关文档