当前位置:  开发笔记 > 编程语言 > 正文

为什么我们使用'this->'而不是'this'.访问会员?

如何解决《为什么我们使用'this->'而不是'this'.访问会员?》经验,为你挑选了1个好方法。

我正在看一个人在C++中为FaceBook做的图书馆.头文件是这样的:

#ifndef __FACEBOOK_H__
#define __FACEBOOK_H__

/**
 * Facebook Class 
 * Joel Seligstein
 * Last mod: Aug 22, 2006
 *
 * This is the beginnings of a facebook class set and REST client.  Its not documented
 * yet nor nearly complete.  But this is a release to demonstrate its usefulness.  
 * Please email joel@seligstein.com with suggestions or additions.
 *
 * TODO: Create classes/parsers for each request type
 * TODO: Linux URL launcher
 */

//uncomment to have verbose output turned on
//#define fb_debug 1

//define which platform you're compiling for
#define fb_windows 1
//#define fb_linux 1

#include 
#include 
#include 
using namespace std;

#ifdef fb_windows
#include 
#endif

#include "curl/curl.h"
#include "xmlParser/xmlParser.h"
#include "md5.h"

class facebook
{
    public:
        //app/session vars
        string api_key;
        string secret;
        string token;
        string server;
        string session_key;
        string session_secret;
        string uid;
        bool has_session;

        facebook( string my_key, string my_secret, string my_server );
        bool authenticate( );
        bool request( string method, list params, string *res );
        bool load_token( );
        void launch_login( string url );
        bool get_session( );
        void clean_up( );

    private:
        //curl info
        CURL *curl;
        CURLcode res;
        int call_id;

        //internal functions
        string get_signature( list params );
        static string md5( string str );
        static string get_param_string( list params, bool separate );
        static size_t write_callback( void *ptr, size_t size, size_t nmemb, void *userp );
};

#endif //__FACEBOOK_H__

然后在cpp文件中,我的问题是关于这个,下面是构造函数:

facebook::facebook( string my_key, string my_secret, string my_server )
{
    this->api_key = my_key;
    this->secret = my_secret;
    this->server = my_server;
    this->has_session = false;
    this->call_id = 0;
}

为什么他们使用->运营商而不是.

我有一个有限的理解,->直接在内存中访问该类型的属性和方法,但我很困惑,我会,通过无知,期望看到:

facebook::facebook( string my_key, string my_secret, string my_server )
{
    this.api_key = my_key;
    this.secret = my_secret;
    this.server = my_server;
    this.has_session = false;
    this.call_id = 0;
}

我想知道的是为何->使用点符号的原理.


更新:对于与我同舟共济的其他人并学习C++.我已经扩展了一个成员在这个问题中发布的示例.我还包含了成员字段的初始化列表.

#include "stdafx.h"
#include 
using namespace std;

class A {
private:
    int x;
public:
    A() : x(0){}
    int getX() const {return x;}
    void setX(int xx) {x += xx;}
};

int main()
{
    A a;

    a.setX(13);

    A *pa = &a;

    pa->setX(2);

    A b = a;

    b.setX(5);

    cout << "a" << a.getX() << endl;

    cout << "a*" << pa->getX() << endl;

    cout << "b" << b.getX() << endl;

    return 0;
}

Benoît.. 6

"this"是指向当前对象的指针,即类A的内部方法(或构造函数),它的类型为"A*".请注意,如果方法标记为const,则其类型为"A const*".因此使用" - >"(由指针设计)而不是".".(为类对象"A"设计或对类对象"A&"的引用)



1> Benoît..:

"this"是指向当前对象的指针,即类A的内部方法(或构造函数),它的类型为"A*".请注意,如果方法标记为const,则其类型为"A const*".因此使用" - >"(由指针设计)而不是".".(为类对象"A"设计或对类对象"A&"的引用)

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有