【C++编程基础】类的成员函数重载 | 您所在的位置:网站首页 › 成员函数的重载 › 【C++编程基础】类的成员函数重载 |
函数重载简单说是一个函数实现多个功能,函数名称相同但函数的参数不同或参数类型不同。 int add(int a,int b); float add(float a,float b); int add(int a,int b,int c);以上三个函数函数名称相同,但参数类型或个数不同,在c语义中分别实现后可以实现函数重载,调用时通过参数类型的不同可以调用不同的功能; c++中成员函数的重载功能通过虚函数实现,举例如下,利用OpenCV库计算图像中物体的角度,cpp文件如下: #include "pch.h" #include "xxx.h" test::test() { } test::~test() { } float test::checkAngle(cv::RotatedRect& rect1) { float angleRect = 0; if ((abs(rect1.angle) < 2 || (90 - abs(rect1.angle)) < 2)) { angleRect = 0; } else if (abs(rect1.angle) > 60) { angleRect = (90 - abs(rect1.angle)); } else if (abs(rect1.angle) < 30) { angleRect = abs(rect1.angle); } else { angleRect = 45; } return angleRect; } float test::checkAngle(RotatedRect& rect1, RotatedRect& rect2) { float angleRect = 0; if ((abs(rect1.angle) < 2 || (90 - abs(rect1.angle)) < 2) && (abs(rect2.angle) < 2 || (90 - abs(rect2.angle)) < 2)) { angleRect = 0; } else if (abs(rect1.angle) > 60 && abs(rect2.angle) > 60) { angleRect = (90 - abs(rect1.angle)) / 2 + (90 - abs(rect2.angle)) / 2; } else if (abs(rect1.angle) < 30 && abs(rect2.angle) < 30) { angleRect = abs(rect1.angle) / 2 + abs(rect2.angle) / 2; } else if (abs(rect1.angle) > 60 && abs(rect2.angle) < 30) { angleRect = (90 - abs(rect1.angle)) / 2 + abs(rect2.angle) / 2; } else if (abs(rect1.angle) < 30 && abs(rect2.angle) > 60) { angleRect = abs(rect1.angle) / 2 + (90 - abs(rect2.angle)) / 2; } else { angleRect = 45; } return angleRect; }.h文件如下: class test { public: test(); ~test(); public: virtual float checkAngle(cv::RotatedRect& rect1, cv::RotatedRect& rect2); virtual float checkAngle(cv::RotatedRect& rect1); }; |
CopyRight 2018-2019 实验室设备网 版权所有 |