1 #include "mainwindow.h" 2 #include <QApplication> 3 #include <QPushButton>> 4 5 //重载的三种形式,成员函数重载 6 //友元函数重载,可以使用私有变量以及保护变量 7 //一般函数重载都是公有变量 8 9 class button 10 { 11 QPushButton *p; 12 int x,y; 13 14 friend void operator *(button &buttonx,int n); 15 friend void operator *(int n,button &buttonx); 16 public: 17 button():x(500),y(400) 18 { 19 p = new QPushButton; 20 p->resize(x,y); 21 p->show(); 22 } 23 ~button() 24 { 25 delete p; 26 } 27 28 bool operator < (button &buttonx) 29 { 30 return this->x*this->y < buttonx.x*buttonx.y; 31 } 32 }; 33 34 void operator *(button &buttonx,int n) 35 { 36 buttonx.x*=n; 37 buttonx.y*=n; 38 buttonx.p->resize(buttonx.x,buttonx.y); 39 } 40 41 void operator *(int n,button &buttonx) 42 { 43 buttonx.x*=n; 44 buttonx.y*=n; 45 buttonx.p->resize(buttonx.x,buttonx.y); 46 } 47 48 //涉及this指针则不可以在友元函数或外部函数中重载 49 //void operator [](button &buttonx) 50 // = [] () ->等这些运算符涉及到this指针,必须不能用友元函数以及外部函数 51 52 int main(int argc, char *argv[]) 53 { 54 QApplication a(argc, argv); 55 56 button b; 57 2*b; 58 59 qDebug() << "hello" << endl; 60 return a.exec(); 61 }