【C++编程基础】类的成员函数重载 您所在的位置:网站首页 成员函数的重载 【C++编程基础】类的成员函数重载

【C++编程基础】类的成员函数重载

2024-07-11 22:44| 来源: 网络整理| 查看: 265

函数重载简单说是一个函数实现多个功能,函数名称相同但函数的参数不同或参数类型不同。

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 实验室设备网 版权所有