<small id='ms0pcpzx'></small><noframes id='2xycurfl'>

    <bdo id='mae0z0ge'></bdo><ul id='uoxq346c'></ul>

      1. <legend id='bm669e32'><style id='wx5l8zav'><dir id='rk74gjv8'><q id='a7ghv52t'></q></dir></style></legend>

      2. <i id='2wu0bg8r'><tr id='9bc98bu4'><dt id='px96n231'><q id='eboj3jbe'><span id='3nujf6kc'><b id='rgkufzem'><form id='n8q36f9v'><ins id='l03zkz21'></ins><ul id='nen1kjd1'></ul><sub id='qabhjlw4'></sub></form><legend id='s4umzail'></legend><bdo id='3rahfbup'><pre id='nuoao9lz'><center id='c2c4zes8'></center></pre></bdo></b><th id='m0b7s9r6'></th></span></q></dt></tr></i><div id='2aqcnx11'><tfoot id='gug9l6ev'></tfoot><dl id='jb2ccwln'><fieldset id='lpjb7oe5'></fieldset></dl></div>
        <tfoot id='5m92pb0u'></tfoot>

        欢迎来到入门教程网!

        C++

        当前位置:主页 > 软件编程 > C++ >

        &amp;lt;六&amp;gt;指向类成员的指针

        来源:本站原创|时间:2023-04-02|栏目:C++|点击:

        指向类成员(成员变量和成员方法)的指针

        1:定义一个指针指向类的普通成员变量

        示例代码1

        点击查看代码
        class Test2{
        
        public:
           int ma;
           static int mb;
           void f1(){cout<<"Test::void f1()"<<endl;}
           static void static_f(){
               cout<<"Test::void static_f()"<<endl;
           }
        };
        
        int Test2::mb=0;
        
        int main(){
            int *p = &Test2::ma;
            return 1;
        }
        
        上面 int *p = &Test2::ma; 可以这样吗? 不可以, 编译报错 不可以将 int Test2::* 转为 int *
        点击查看代码
            需要这样定义 
            int  Test2::*p = &Test2::ma;
            *p=30;//这样操作没有意义,因为ma是需要基于对象的,所以需要这样
         
            Test2  t;
            int  Test2::*p = &Test2::ma;
            t.*p=30;
        
            或者
            Test2 *pt=new Test2();
            int  Test2::*pp = &Test2::ma;
            pt->*pp=40;
        
            或者
            int *p3=&Test2::mb;
            *p3=50;
        
        

        2:定义一个函数指针指向类的成员函数

        void (*pf)() = &Test2::f1(); 编译报错

        要明确的指出pf是指向Test2类中函数的函数指针,如下

        void(Test2::*pf)()=&Test2::f1();

        如果通过函数指针调用函数?需要依赖对象,如下
        Test2 t3;
        Test2 p4=new Test2();
        t3.
        pf(); //*解引用

        (p4->*pf)();// *解引用

        3:定义函数指针指向类的静态成员方法

        void (pf2)() = &Test2::static_f;
        (
        pf2)();

        完整示例代码如下

        点击查看代码
        class Test2{
        
        public:
           int ma;
           static int mb;
           void f1(){cout<<"Test::void f1()"<<this->ma<<endl;}
           static void static_f(){
               cout<<"Test::void static_f()"<< mb<<endl;
           }
           Test2(int _ma):ma(_ma){}
        };
        
        int Test2::mb=0;
        
        
        int main(){
        
            Test2    obj1(100);
            Test2   *pObj2=new Test2(20);
        
            //定义指针指向 类的普通成员变量
            int Test2::*p = &Test2::ma;
            obj1.*p=1000;
            pObj2->*p=2000;
        
            //定义指针指向 类的 静态成员变量
            int *pStatic = &Test2::mb;
            *pStatic=9999;
        
            //定义函数指针 指向 类的普通成员方法
            void (Test2::*pf)()=&Test2::f1;
            (obj1.*pf)();
            (pObj2->*pf)();
        
        
        
            //定义函数指针 指向 类的静态方法
        
             void (*pf2)() = &Test2::static_f;
             (*pf2)();
        
            return 1;
        }
        
        

        <small id='haiyd326'></small><noframes id='kf0ifg7k'>

          <bdo id='9s5z4we0'></bdo><ul id='w9m3n1kk'></ul>
            <tbody id='bzvrdgt6'></tbody>

            • <legend id='awikwk8k'><style id='e2uebgc1'><dir id='zdph2139'><q id='4yy3l5r6'></q></dir></style></legend>

              <i id='63mm3loq'><tr id='mrp8uz56'><dt id='htjbxfga'><q id='wmep7eng'><span id='dwnv7bf4'><b id='vyw70ibf'><form id='y1hb869l'><ins id='9ccffaq4'></ins><ul id='vu2vdc1n'></ul><sub id='caslqgit'></sub></form><legend id='xiiisiq7'></legend><bdo id='zj2xtafq'><pre id='1o19r72v'><center id='kibu6tae'></center></pre></bdo></b><th id='lu28vqf4'></th></span></q></dt></tr></i><div id='i0254www'><tfoot id='qsoikfsj'></tfoot><dl id='goq6f4w7'><fieldset id='qpq8czr9'></fieldset></dl></div>
              • <tfoot id='ssfxsyon'></tfoot>

                  上一篇:&amp;lt;四&amp;gt;构造函数初始化列表

                  栏    目:C++

                  下一篇:&amp;lt;五&amp;gt;关于类的各类成员

                  本文标题:&amp;lt;六&amp;gt;指向类成员的指针

                  本文地址:https://www.xiuzhanwang.com/a1/c++/17094.html

                  网页制作CMS教程网络编程软件编程脚本语言数据库服务器

                  如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

                  联系QQ:835971066 | 邮箱:835971066#qq.com(#换成@)

                  Copyright © 2002-2020 脚本教程网 版权所有

                1. <small id='ixhhjzp6'></small><noframes id='mefen12h'>

                    <legend id='ju2wp75v'><style id='sog56wyh'><dir id='15dt2ars'><q id='4zewqxf7'></q></dir></style></legend>
                      <bdo id='6wzbq0pt'></bdo><ul id='jmxgfn8u'></ul>
                  1. <tfoot id='zcgvo9ek'></tfoot>
                    <i id='m2qzr7a5'><tr id='3pz4agod'><dt id='j62yx6i6'><q id='sc2agol5'><span id='gkdzuvp6'><b id='0c7fh6bo'><form id='itx1gx1q'><ins id='bkeep7vr'></ins><ul id='wdkdesqb'></ul><sub id='sbgszuhh'></sub></form><legend id='gec9qps6'></legend><bdo id='yrmwidk4'><pre id='iz12kdie'><center id='juehjs7c'></center></pre></bdo></b><th id='9dz6qslu'></th></span></q></dt></tr></i><div id='1s725ck6'><tfoot id='3dhnxre3'></tfoot><dl id='4uo084x2'><fieldset id='5zhms4sc'></fieldset></dl></div>