99.重载[] * -> ->*

 1 #include "mainwindow.h"
 2 #include <QApplication>
 3 #include <QPushButton>>
 4 
 5 //重载的三种形式,成员函数重载
 6 //友元函数重载,可以使用私有变量以及保护变量
 7 //一般函数重载都是公有变量
 8 
 9 class buttons
10 {
11     QPushButton *p;
12     int n;
13 
14 public:
15     buttons():n(10)
16     {
17         p = new QPushButton[10];
18         for(int i=0;i<10;i++)
19         {
20             p[i].resize(100,100);
21             p[i].move(i*100,i*100);
22             p[i].show();
23         }
24     }
25     ~buttons()
26     {
27         delete[] p;
28     }
29 
30     //重载[]
31     QPushButton *operator [](int i)
32     {
33         if(i>=0 && i<=n-1)
34         {
35             return this->p+i;
36         }
37     }
38 
39     //重载*
40     QPushButton *operator *()
41     {
42          return this->p;
43     }
44 
45     //重载->
46     QPushButton *operator ->()
47     {
48          return this->p+5;
49     }
50 
51     //重载->*
52     QPushButton *operator ->*(int i)
53     {
54          return this->p+i;
55     }
56 };
57 
58 
59 int main(int argc, char *argv[])
60 {
61     QApplication a(argc, argv);
62 
63     buttons bs;
64    // bs[3]->hide();
65    // (*bs+2)->hide();
66     //bs->hide();
67    // bs->*hide();
68     (bs->*1)->hide();
69     return a.exec();
70 }

 

posted @ 2018-03-19 00:10  喵小喵~  阅读(155)  评论(0编辑  收藏  举报