-
输出运算符重载:友元函数实现 friend ostream& operator<<(ostream &out,const 类名 &引用名)
本站就是将 cout<<coor 替换为了 cout<<coor.m_iX<<","<<coor.m_iY
输出运算符不能使用成员函数重载
查看全部 -
二元运算符重载: 1成员函数重载 类名 operator 重载符号(const 类名 &引用名)
2友元函数重载 friend 类名 operator 重载符号(const 类名 &引用名1,const 类名 &引用名2)
查看全部 -
后置运算符重载:1成员函数重载 类名 operator 重载符号(int)
查看全部 -
运算符重载: 1成员函数重载 类名&operator 重载符号()
2 友元函数重载 friend 类名&operator 重载符号(类 &型参)
查看全部 -
静态成员和成员函数注意事项
查看全部 -
vector
查看全部 -
友元不具有传递性
查看全部 -
函数模板
函数模板本身不会产生实质性的代码,函数模板的实例化对象即是模板函数,函数模板的使用在一定程度上可以减少重载函数的使用,但无法从根本上解决重载函数所带来的代码冗余的问题
类型作为模板参数
声明
eg. template <class T>
eg. template <typename T>
实例
eg. swap<int>(x,y);
变量作为模板参数
声明
eg. template <int size>
实例
eg. dispaly<10>();
多参数函数模板
注意:模板类型参数中typename和class可以混用;模板类型参数和模 板变量参数可以混用
声明
eg. template <typename T,typename C>
实例
eg. display<int,string>(a,str);
查看全部 -
二元运算符重载
(+)运算符的重载
成员函数重载
声明
eg. Coordinate operator+(const Coordinate &coor);
实例
eg. coor3 = coor1 + coor2; //coor1.operator+(coor2);
友元函数重载
声明
eg. friend Coordinate operator+(const Coordinate &coor1,const Coordinate &coor2);
实例
eg. coor3 = coor1 + coor2; //operator+(coor1,coor2);
(<<)(输出)运算符的重载
注意:<<运算符的重载不能通过成员函数重载,因为<<运算符的第一个对象必须是ostream对象,而通过成员函数重载时第一个对象是当前对象
友元函数重载
声明
eg. friend ostream& operator<<(ostream &cout,const Coordinate &coor);
实例
eg. cout << coor; //operator<<(cout,coor);
([])(索引)运算符的重载
注意:[]运算符的重载不能通过友元函数重载,因为[]运算符的第一个对象必须是当前对象,而通过友元函数重载时第一个对象既可以是当前对象也可以是其他对象
成员函数重载
声明
eg. int operator[](int index);
实例
eg. cout << coor[0]; //coor.operator[](0);
eg. cout << coor[1]; //coor.operator[](1);
查看全部 -
一元运算符重载
运算符重载的本质是函数重载,分为成员函数重载和友元函数重载。
(-)的重载
成员函数重载
eg. Coordinate& operator-();
友元函数重载
eg. friend Coordinate& operator-(Coordinate &coor);
(++)的重载
前置++
eg. Coordinate& operator++();
后置++
eg. Coordinate operator++(int);
查看全部 -
有关类的静态成员的注意事项
1.静态成员变量必须单独初始化
2.静态成员函数无法调用非静态成员
3.静态成员变量只有一份,且不依赖对象而存在
查看全部 -
类的静态成员依赖于类,而类的普通成员则依赖于类的实例化对象。
查看全部 -
友元只是封装的补充,友元的使用破坏了封装性,实践时应尽量避免使用友元。
查看全部 -
关于友元的注意事项
1.友元关系不可传递
2.友元关系的单向性
3.友元声明的形式及数量不受限制
查看全部 -
return *this;//返回对象本身
查看全部
举报