cout<<"\\npRef as a Point:"<<pRef; /pRef作为一个“点”输出 Circle&cRef=cyl;/cRef是Circle类对象的引用变量 cout<<"\\ncRef as a Circle:"<<cRef; /cRef作为一个“圆”输出 return 0; } 运行结果如下: original cylinder: (输出cyI的初始值) x=3.5,y=6.4,r=5.2,h=10 (圆心坐标x,y。半径r,高h) area=496.623,volume-=849.486 (圆柱表面积area和体积volume) new cylinder: (输出cy1的新值) Center=[5,5],r=7.5,h=15 (以[5,5]形式输出圆心坐标) area=1060.29,volume-=2650.72 (圆柱表面积area和体积volume) pRef as a Point:(5,5] (pRef作为一个“点”输出) cRef as a Circle:Center=[5,5],r=7.5,area=176.714 (cRef作为一个“圆”输出)
cout<<″\\npRef as a Point:″<<pRef; //pRef作为一个“点”输出 Circle &cRef=cy1; //cRef是Circle类对象的引用变量 cout<<″\\ncRef as a Circle:″<<cRef; //cRef作为一个“圆”输出 return 0; } 运行结果如下: original cylinder: (输出cy1的初始值) x=3.5, y=6.4, r=5.2, h=10 (圆心坐标x,y。半径r,高h) area=496.623, volume=849.486 (圆柱表面积area和体积volume) new cylinder: (输出cy1的新值) Center=[5,5], r=7.5, h=15 (以[5,5]形式输出圆心坐标) area=1060.29, volume=2650.72 (圆柱表面积area和体积volume) pRef as a Point:[5,5] (pRef作为一个“点”输出) cRef as a Circle: Center=[5,5], r=7.5, area=176.714 (cRef作为一个“圆”输出)
在本例中存在静态多态性,这是运算符重载引起的。可以看 到,在编译时编译系统即可以判定应调用哪个重载运算符函 数。稍后将在此基础上讨论动态多态性问题。 12.3虚函数 12.3.1虚函数 在类的继承层次结构中,在不同的层次中可以出现名字相 同、参数个数和类型都相同而功能不同的函数。编译系统 按照同名覆盖的原则决定调用的对象 在例 cyl.area 调用 派生类Cylinder中的成员函数area 12.1程 序中 想调用cyl中的直接基类Circle的area函数 表示为:cyl.Circle:area() 用这种方法来区分两个同名的函数。但是这样做很不方便
用这种方法来区分两个同名的函数。但是这样做很不方便 12.3 虚函数 12.3.1 虚函数 的作用 在本例中存在静态多态性,这是运算符重载引起的。可以看 到,在编译时编译系统即可以判定应调用哪个重载运算符函 数。稍后将在此基础上讨论动态多态性问题。 在类的继承层次结构中,在不同的层次中可以出现名字相 同、参数个数和类型都相同而功能不同的函数。编译系统 按照同名覆盖的原则决定调用的对象 在例 12.1程 序中 cy1.area( ) 派生类Cylinder中的成员函数area 想调用cy1中的直接基类Circle的area函数 表示为: cy1.Circle::area( ) 调用
能否用同一 调用派生类 同名 不是通过不同的对象名去调 个调用形式调用基类 函数 用不同派生层次中的同名函 数,而是通过指针调用它们 例如, pt->display(); 调用不同派生层次中的displayi函数 只需在调用前给指针变量pt赋以不同的值 C+中的虚函数 允许在派生类中 可以通过基类指针或 解决问题方法 重新定义与基类→引用来访问基类和派 同名的函数 生类中的同名函数 请分析例12.2。这个例子开始时没有使用 虚函数,然后再讨论使用虚函数的情况
请分析例12.2。这个例子开始时没有使用 虚函数,然后再讨论使用虚函数的情况。 例如, pt->display( ); 调用不同派生层次中的display函数 只需在调用前给指针变量pt赋以不同的值 C++中的虚函数 解决问题方法 能否用同一 个调用形式 调用派生类 调用基类 同名 函数 不是通过不同的对象名去调 用不同派生层次中的同名函 数,而是通过指针调用它们 允许在派生类中 重新定义与基类 同名的函数 可以通过基类指针或 引用来访问基类和派 生类中的同名函数