重载输出运算符 通常情况下,输出运算符第一个形参是一个非常量 对象的引用。之所以使用 是非常量是因为向流写入内容会改变其状态;而形参是引用是因为无法直接复制一个 对象。 第二个形参一般来说是一个常量的引用,该常量表示想要打印的类类型。采用引用可以避免复制实参;之所以是常量是因为通常情况下打印对象不会 ...
分类:
其他好文 时间:
2020-03-15 11:42:56
阅读次数:
94
#include<iostream> #include<string> using namespace std; class MyPrint { public: void operator()(string text) { cout << text << endl; } }; class MyAdd ...
分类:
编程语言 时间:
2020-03-13 21:01:22
阅读次数:
63
4.5 运算符重载 运算符重载概念:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型 4.5.1 加号运算符重载 作用:实现两个自定义数据类型相加的运算 C++ class Person { friend ostream& operatorm_A = a; this m_B = b ...
分类:
编程语言 时间:
2020-03-07 19:03:03
阅读次数:
88
friend(友元)可以干什么 修饰对象之一:类 假如B是A的友元,B的成员函数可以访问A的 所有成员 ,包括protect和private成员变量和成员函数,示例: class A { friend class B }; 修饰对象之二:普通函数 普通函数F是A的友元函数,则这个普通函数可以访问A的 ...
分类:
其他好文 时间:
2020-03-06 21:53:07
阅读次数:
91
1.拷贝构造函数 Line( const Line &obj); √ //常量引用 Line( Line obj); × 形参复制到实参会调用拷贝构造函数,所以会形成无休止的递归调用从而导致栈溢出。 2.运算符重载 传参类型声明为常量引用。 引用:从形参到实参就不会调用拷贝构造函数,比面无谓消耗,提 ...
分类:
其他好文 时间:
2020-02-28 01:21:41
阅读次数:
67
1 struct node{ 2 int a; 3 int cost; 4 node(int a, int cost):a(a), cost(cost){} 5 friend bool operator n2.cost; 7 } 8 }; 9 priority_queue q; ...
分类:
其他好文 时间:
2020-02-25 09:46:33
阅读次数:
73
运算符重载是通过函数实现的,它本质上是函数重载。 运算符重载其实就是定义一个函数,在函数内实现想要的功能,当用到这个运算符时,编译器会自动调用这个函数。 可以将 名称这一部分看作函数名,例如 。 ...
分类:
编程语言 时间:
2020-02-24 09:23:25
阅读次数:
50
1.和结构体结合的运算符重载 https://www.runoob.com/cplusplus/cpp-overloading.html 2. ...
分类:
其他好文 时间:
2020-02-20 23:41:20
阅读次数:
61
C++友元函数 今天学到一个特别有意思的东西,甚至是C++独有的东西,叫做 友元函数 。类的友元函数是定义在类外部,但有权访问类的所有 私有(private) 成员和 保护(protected) 成员。尽管友元函数的原型有在类的定义中出现过, 但是友元函数并不是成员函数。 友元可以是一个函数,该函数 ...
分类:
编程语言 时间:
2020-02-11 22:00:50
阅读次数:
80
重载 运算符重载 注意事项 (1)重载后的运算符的操作对象必须至少有一个是用户定义的类型(不能出现歧义) (2)使用运算符不能违法运算符原来的句法规则(不能改变操作数的个数) (3)不能修改运算符原先的优先级 (4)不能创建一个新的运算符 (5)不能进行重载的运算符:成员运算符,作用域运算符,条件运 ...
分类:
编程语言 时间:
2020-02-06 11:01:54
阅读次数:
67