主页 > 软件开发  > 

QT学习(五)C++函数重载


一、 函数重载 在同一个作用域内,可以声明几个功能类似的同名函数, 这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同。您不能仅通过返回类型的不同来 重载函数。 下面的实例中,同名函数 print() 被用于输出不同的数据类型 #include <iostream> #include "string" using namespace std; class printData { public: void print(int i) { cout << "整数为: " << i << endl; } void print(double f) { cout << "浮点数为: " << f << endl; } void print(string str) { cout << "字符串为: " << str << endl; } }; void print(int i) { cout << "整数为: " << i << endl; } void print(double f) { cout << "浮点数为: " << f << endl; } void print(string str) { cout << "字符串为: " << str << endl; } void print(int i,double f) { cout << "整数为: " << i <<",浮点数为:"<<f<< endl; } int main(void) { print(5); print(500.13); print("hello world"); print(1,23.2); printData pd; // 输出整数 pd.print(5); // 输出浮点数 pd.print(500.263); // 输出字符串 string str = "Hello C++"; pd.print(str); return 0; } 二、 运算符重载 在 C++ 中,运算符重载是一个允许程序员自定义各种运算符(如 + , - , == , != 等)在自定义类型(类或结构体)上的行为的特性。这意味着你可以定义类似于内置类型的运算符行为,使你的自定义类型更加直观和易于使用。 基本原则 1. 不可以创建新的运算符 :只能重载已经存在的运算符。 2. 至少有一个操作数是用户定义的类型 :不能重载两个基本类型的运算符。 3. 不能更改运算符的优先级 :重载的运算符保持其原有的优先级和结合性。 示例 1 :假设我们有一个 Person 类,我们可以重载 == 运算符来实现两个 Person 是否相等的判断。 #include <iostream> using namespace std; class Person { public: string name; int inNumberTail; bool operator==(Person pTmp); }; bool Person::operator==(Person pTmp){ return pTmp.name == name && pTmp.inNumberTail == inNumberTail; } int main() { //假设我们认定名字和身份证尾号6位一样的两个对象是同一个人! Person p1; p1.name = "张三"; p1.inNumberTail = 412508; Person p2; p2.name = "张三"; p2.inNumberTail = 412508; bool ret = p1 == p2; cout << ret << endl; return 0; } 示例 2 :假设我们有一个简单的 Point 类,我们可以重载 + 运算符来实现两个点的加法。 #include <iostream> using namespace std; class Point { public: int x, y; // 重载 + 运算符 Point operator+(Point other) { Point res; res.x = x + other.x; res.y = y + other.y; return res; } }; int main() { Point p1; p1.x = 1; p1.y = 2; Point p2; p2.x = 2; p2.y = 3; Point p3 = p1 + p2; // 使用重载的 + 运算符 std::cout << "p3.x: " << p3.x << ", p3.y: " << p3.y << std::endl; // 输出 return 0; };

标签:

QT学习(五)C++函数重载由讯客互联软件开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“QT学习(五)C++函数重载