-
变量作为模板的参数查看全部
-
typename的使用查看全部
-
函数模板查看全部
-
二元运算符重载(part3) 3、[]索引运算符重载 声明: int operator[](int index); //作为成员函数 定义: int Coordinate::operator[](int index) { if(0 == index) {return m_iX;} if(1 == index) {return m_iY;} } 调用: Coordinate coor(3,5); cout << coor[0]; //coor.operator[](0); cout << coor[1]; //coor.operator[](1); *索引运算符不能采用友元函数重载,因为第一个参数必须是this指针,而友元函数重载的第一个参数可以是成员函数重载中的this指针也能是其他值。查看全部
-
二元运算符重载(part2) 2、<<(输出符号)运算符重载 定义: friend ostream &operator<<(ostream &out,const Coordinate &coor); 声明: ostream &operator<<(ostream &out,const Coordinate &coor) { out << coor.m_iX << "," << coor.m_iY; return out; } 调用: Coordinate coor(3,5) cout << coor; //operator<<(cout,coor); *输出运算符不能使用成员函数重载,因为第一个对象必须是ostream,故必须使用友元函数进行重载 *使用时需#include<ostream>查看全部
-
看返回值,如果为*this或者指针类型前面加星号,其实加上&就相当于返回的是引用查看全部
-
二元运算符重载(part1) 1、+(加号)运算符重载 *成员函数重载 声明: Coordinate operator+(const Coordinate &coor); 定义: Coordinate Coordinate::operator+(const Coordinate &coor) { Coordinate temp; temp.m_iX = this->m_iX + coor.m_iX; temp.m_iY = this->m_iY + coor.m_iY; return temp; } 调用: Coordinate coor1(3,5); Coordinate coor2(4,7); Coordinate coor3(0,0); coor3 = coor1 + coor2; //coor1.operator+(coor2); *友元函数重载 声明: friend Coordinate operator+(const Coordinate &c1,const Coordinate &c2); 定义: Coordinate operator+(const Coordinate &c1,const Coordinate &c2) { Coordinate temp; temp.m_iX = c1.m_iX + c2.m_iX; temp.m_iY = c1.m_iY + c2.m_iY; return temp; } 调用: Coordinate coor1(3,5); Coordinate coor2(4,7); Coordinate coor3(0,0); coor3 = coor1 + coor2; //operator+(coor1,coor2); =(7,12)查看全部
-
#include <iostream> using namespace std; /** * 定义Coordinate类 * 数据成员:m_iX,m_iY * 成员函数:构造函数 * 重载--运算符,重载+运算符 */ class Coordinate { public: Coordinate(int x, int y) { m_iX = x; m_iY = y; } // 前置--运算符重载 coordinate &operator--() {m_iX--; m_iY--; return *this; } // 后置--运算符重载 coordinate operator--(int) { coordinate old(*this); this->m_iX--; this->m_iY--; return old; } // +号运算符重载 Coordinate operator+(coordinate c) { coordinate temp(0,0); temp.m_iX=this->m_iX+c.m_iX; temp.m_iY=this->m_iY+c.m_iY; return temp; } public: int m_iX; int m_iY; }; int main(void) { Coordinate coor1(1, 3); Coordinate coor2(2, 4); Coordinate coor3(0, 0); coor1--; --coor2; coor3 = coor1 + coor2; cout << coor3.m_iX << endl; cout << coor3.m_iY << endl; return 0; }查看全部
-
Coordinate &operator--()前置运算符重载 Coordinate operator--(int)后置运算符重载 Coordinate temp(0,0)记得附上初值查看全部
-
一元运算符重载 1、-(负号)的重载 *成员函数重载 声明: Coordinate &operator-(); 定义(实现): Coordinate &Coordinate::operator-() //有隐性操作指针 { m_iX = -m_iX; m_iY = -m_iY; return *this; } 调用: Coordinate coor1(3,5); -coor1; //coor1.operator-(); *友元函数重载 声明: friend Coordinate &operator-(Coordinate &coor); //使用&coor能提高效率 定义: Coordinate &operator-(Coordinate &coor); //不需要Coordinate::是因为友元函数是一个自由的函数,不属于这个类了 { coor.m_iX = -coor.m_iX; coor.m_iY = -coor.m_iY; return *this; } 调用: Coordinate coor1(3,5); -coor1; //operator-(coor1); 2、++符号的重载 *前置++符号的重载 声明: Coordinate &operator++(); 定义: Coordinate &Coordinate::operator++() { m_iX++; m_iY++; return *this; } 调用: Coordinate coor1(3,5); ++coor1; //coor1.operator++(); =(4,6) *后置++符号的重载 声明: Coordinate operator++(int); //返回值不是引用,而是对象;要传入int(是个标识) 定义: Coordinate Coordinate::operator++(int) { Coordinate old(*this); m_iX++; m_iY++; return old; } 调用: Coordinate coor1(3,5); coor1++; //coo1.operator++(0);查看全部
-
输出运算符的重载只能使用友元函数的重载查看全部
-
输出运算符的重载查看全部
-
*静态成员是类的成员,不是对象的成员; *静态成员函数不能直接访问非静态函数,普通成员函数可以调用静态函数。 *静态成员函数访问静态数据成员的方法:类名::静态成员名 || 对象名.静态成员名 || 对象指针->静态成员名 *静态成员函数没有this指针 注意事项: 1、静态数据成员必须单独初始化(在类的外面初始化); 2、静态数据成员只有一份,并不依赖对象存在。查看全部
-
友元的注意事项: 1、友元关系不可传递(A是B的友元,C是B的友元,但A和C不一定存在友元关系); 2、友元关系的单向性(A是B的友元,但B不一定是A的友元); 3、友元声明的形式和数量不受限制(可以既有友元函数,也有友元类;数量也可以混搭)。查看全部
-
看返回值,如果为*this或者指针类型前面加星号,其实加上&就相当于返回的是引用查看全部
举报
0/150
提交
取消