当前位置: 首页 > news >正文

关于网站制作公司制作个网站

关于网站制作,公司制作个网站,网站开发的书籍,做网站赠送在C中,this指针是一个隐藏的指针,指向当前对象实例。它在成员函数中自动可用,用于访问该对象的成员变量和成员函数。理解this指针的工作原理有助于理解为什么指向成员的指针是可调用的。在本文中,我们将详细探讨this指针的概念&am…

亿牛云代理.jpeg

在C++中,this指针是一个隐藏的指针,指向当前对象实例。它在成员函数中自动可用,用于访问该对象的成员变量和成员函数。理解this指针的工作原理有助于理解为什么指向成员的指针是可调用的。在本文中,我们将详细探讨this指针的概念,并通过具体的代码示例说明其在指向成员指针中的应用。

1. 理解this指针

每个非静态成员函数都有一个隐藏的this指针,指向调用该函数的对象。this指针在成员函数内部自动可用,允许函数访问对象的成员。

class MyClass {
public:int value;void display() {std::cout << "Value: " << this->value << std::endl;}
};

在上述代码中,this->value访问了当前对象的成员变量value

2. 指向成员变量的指针

指向成员变量的指针用于指向类的成员变量。这种指针不能单独使用,必须结合特定的对象实例。

class MyClass {
public:int value;
};int MyClass::*ptr = &MyClass::value;MyClass obj;
obj.value = 42;// 使用成员变量指针访问对象成员
std::cout << "Value: " << obj.*ptr << std::endl;

在这里,ptr是指向成员变量value的指针,必须通过对象实例obj来访问。

3. 指向成员函数的指针

指向成员函数的指针用于指向类的成员函数。这种指针的类型为ReturnType (ClassName::*)(ArgType),其中ReturnType是函数的返回类型,ArgType是函数的参数类型。

class MyClass {
public:void display(int num) {std::cout << "Number: " << num << std::endl;}
};void (MyClass::*funcPtr)(int) = &MyClass::display;MyClass obj;
(obj.*funcPtr)(42);

在这里,funcPtr是指向成员函数display的指针,通过对象实例obj调用。

4. this指针如何使成员指针可调用

在调用成员函数指针时,编译器隐式地传递了this指针,使得成员函数可以访问当前对象的成员变量。这是为什么成员指针可以通过对象实例调用的原因。

5. 代码示例:使用指针的爬虫示例

我们将实现一个多线程的爬虫示例,使用代理IP技术来提高采集效率。我们假设使用亿牛云爬虫代理,其域名、端口、用户名和密码分别为proxy.16yun.cn8080usernamepassword。在示例中,我们将利用C++的成员指针和this指针。

爬虫类设计

首先,我们设计一个爬虫类,其中包括成员函数和指向这些成员的指针。

#include <iostream>
#include <thread>
#include <vector>
#include <curl/curl.h>//爬虫代理设置(使用亿牛云爬虫代理加强版)
const std::string PROXY = "proxy.16yun.cn:8080";
const std::string PROXY_USERPWD = "username:password";// 用于接收curl回调的函数
size_t WriteCallback(void* contents, size_t size, size_t nmemb, void* userp) {((std::string*)userp)->append((char*)contents, size * nmemb);return size * nmemb;
}class WebCrawler {
public:// 成员变量std::string response;// 成员函数void fetchUrl(const std::string& url) {CURL* curl;CURLcode res;response.clear();curl = curl_easy_init();if (curl) {curl_easy_setopt(curl, CURLOPT_URL, url.c_str());curl_easy_setopt(curl, CURLOPT_PROXY, PROXY.c_str());curl_easy_setopt(curl, CURLOPT_PROXYUSERPWD, PROXY_USERPWD.c_str());curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response);res = curl_easy_perform(curl);if (res != CURLE_OK) {std::cerr << "curl_easy_perform() failed: " << curl_easy_strerror(res) << std::endl;} else {std::cout << "Data from " << url << ": " << response << std::endl;}curl_easy_cleanup(curl);}}// 使用成员函数指针调用void startMultithreadedCrawl(const std::vector<std::string>& urls) {std::vector<std::thread> threads;void (WebCrawler::*funcPtr)(const std::string&) = &WebCrawler::fetchUrl;for (const auto& url : urls) {threads.emplace_back(std::thread(funcPtr, this, url));}for (auto& thread : threads) {if (thread.joinable()) {thread.join();}}}
};int main() {WebCrawler crawler;std::vector<std::string> urls = {"http://example.com","http://example.org","http://example.net"};crawler.startMultithreadedCrawl(urls);return 0;
}

代码解释

  1. WebCrawler类
  • 包含一个成员变量response用于存储HTTP响应。
  • 包含一个成员函数fetchUrl,用于使用CURL库从给定URL抓取数据。
  • 包含一个成员函数startMultithreadedCrawl,用于启动多线程爬取。
  1. 成员函数指针
  • void (WebCrawler::*funcPtr)(const std::string&) = &WebCrawler::fetchUrl; 定义了一个指向成员函数fetchUrl的指针。
  • std::thread(funcPtr, this, url) 通过this指针将成员函数指针与具体的对象实例绑定,在多线程中调用。
  1. 多线程爬取
  • 创建一个包含多个URL的向量。
  • 调用startMultithreadedCrawl函数,在每个线程中通过成员函数指针调用fetchUrl

通过以上示例,我们不仅展示了this指针如何使C成员指针可调用,还展示了在实际应用中如何结合代理IP技术和多线程技术提高爬取效率。希望这些内容能帮助您更好地理解C中的this指针和成员指针的应用。

http://www.yayakq.cn/news/303342/

相关文章:

  • 网站的网络推广方案广西柳州模板十大名牌
  • 深圳公司网站备案需要什么资料网站前台需求文档
  • 好的做蛋糕网站怎样创建自己的网址
  • 天津网站优化排名推广中信建设有限责任公司江苏分公司
  • 做网站营销怎么去推广互联网+可以做什么项目
  • 阿里云的网站建设好不好网站建设选哪个好
  • 中山市交通建设发展集团网站青岛北京网站建设价格
  • 网站优化方案怎么写百度餐饮网站建设
  • 丽水网站建设报价马鞍山的网站建设公司
  • 做房产应看的网站电商设计有前景吗
  • 网站建设的项目说明书wordpress注册中文
  • 购物网站如何推广雄安做网站公司
  • 河北住房和城乡建设局网站首页wordpress显示阅读量
  • 淘宝网那样的网站模板自己做网站的劣势
  • 绵阳做绵阳做网站网站网校网站怎么做
  • 厦门450元网站建设公司网站开发文献资料
  • 宁波网站建设制作怎么在网站做系统
  • 全英文外贸网站建设网站开发工具简述
  • 永州市住房和城乡建设局网站可商用的设计网站
  • aspnet做网站视频教程网站建设的费用是不是含税的
  • 北京网站建设机构深圳定制旗袍实体店
  • 广西南宁建设银行招聘网站体验营销理论
  • 网站建设初级教程网页设计用的软件
  • 网站策划师做网络推广常用网站
  • 建设手机网站大概要多少钱网站建设张世勇
  • 一级域名网站怎样收费的小程序登录入口在哪
  • 百度网站的优缺点怎样在百度上发布免费广告
  • 怎么投放网络广告seo实战密码电子书
  • 网站文章后台写完前台不显示甘肃自助建站系统哪家好
  • jira confluence做网站网站开发 策划书