我正在看一个人在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" #includeusing 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&"的引用)
"this"是指向当前对象的指针,即类A的内部方法(或构造函数),它的类型为"A*".请注意,如果方法标记为const,则其类型为"A const*".因此使用" - >"(由指针设计)而不是".".(为类对象"A"设计或对类对象"A&"的引用)