中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

網(wǎng)站設計一年費用有鏈接的網(wǎng)站

網(wǎng)站設計一年費用,有鏈接的網(wǎng)站,wordpress做外貿(mào)網(wǎng)站的劣勢,私有云可以做網(wǎng)站文章目錄 案例 1:圖形繪制庫中的回調(diào)使用場景說明代碼實現(xiàn)代碼解釋 案例 2:網(wǎng)絡服務器中的連接和消息處理回調(diào)場景說明代碼實現(xiàn)代碼解釋 案例 3:定時器中的回調(diào)使用場景說明代碼實現(xiàn)代碼解釋 以下將通過不同場景給出幾個使用回調(diào)類型的具體案…

文章目錄

      • 案例 1:圖形繪制庫中的回調(diào)使用
        • 場景說明
        • 代碼實現(xiàn)
        • 代碼解釋
      • 案例 2:網(wǎng)絡服務器中的連接和消息處理回調(diào)
        • 場景說明
        • 代碼實現(xiàn)
        • 代碼解釋
      • 案例 3:定時器中的回調(diào)使用
        • 場景說明
        • 代碼實現(xiàn)
        • 代碼解釋


以下將通過不同場景給出幾個使用回調(diào)類型的具體案例,幫助你理解回調(diào)類型在 C++ 中的使用方式。我在這里掉進一個坑,一直以為調(diào)用回調(diào)函數(shù)時,是在調(diào)用回調(diào)fction構(gòu)造回調(diào)類型函數(shù)類型,就一直在下為什么他在這里只傳入了類的指針(雖然類有成員方法,但是它知道調(diào)用哪個嗎?)。后面發(fā)現(xiàn)在main函數(shù)調(diào)用回調(diào)函數(shù)時,才發(fā)現(xiàn)這里傳入的是類外面,重新創(chuàng)建的回調(diào)函數(shù)。(可以不用看😂)
這里的聲明的類型例如:using DrawCompleteCallback = std::function<void()>; ,它僅僅只是一個類型,方便類中方法的參數(shù)定義,后面定義的回調(diào)函數(shù)才是真正作為回調(diào)函數(shù)要調(diào)用,并且可以使用回調(diào)類型的方法。

案例 1:圖形繪制庫中的回調(diào)使用

場景說明

假設你正在開發(fā)一個簡單的圖形繪制庫,當圖形繪制完成后,需要通知調(diào)用者執(zhí)行一些額外操作,比如記錄日志或者更新界面狀態(tài)。這時就可以使用回調(diào)函數(shù)來實現(xiàn)這種通知機制。

代碼實現(xiàn)
#include <iostream>
#include <functional>// 定義繪制完成的回調(diào)類型
using DrawCompleteCallback = std::function<void()>;// 圖形類
class Shape {
public:void draw(DrawCompleteCallback callback) {std::cout << "Drawing the shape..." << std::endl;// 模擬繪制過程for (int i = 0; i < 1000000; ++i) {}std::cout << "Shape drawn." << std::endl;// 繪制完成后調(diào)用回調(diào)函數(shù)if (callback) {callback();}}
};// 日志記錄函數(shù),作為回調(diào)函數(shù)
void logDrawCompletion() {std::cout << "Logging: Shape drawing is completed." << std::endl;
}int main() {Shape shape;// 使用日志記錄函數(shù)作為回調(diào)shape.draw(logDrawCompletion);return 0;
}
代碼解釋
  1. 回調(diào)類型定義DrawCompleteCallback 是一個不接受任何參數(shù)且返回值為 void 的可調(diào)用對象類型。
  2. Shapedraw 方法接受一個 DrawCompleteCallback 類型的參數(shù),在圖形繪制完成后調(diào)用該回調(diào)函數(shù)。
  3. 回調(diào)函數(shù)實現(xiàn)logDrawCompletion 是一個普通函數(shù),作為回調(diào)函數(shù)用于記錄圖形繪制完成的日志。
  4. 主函數(shù)調(diào)用:在 main 函數(shù)中,創(chuàng)建 Shape 對象并調(diào)用 draw 方法,傳入 logDrawCompletion 作為回調(diào)函數(shù)。

案例 2:網(wǎng)絡服務器中的連接和消息處理回調(diào)

場景說明

在一個簡單的網(wǎng)絡服務器中,需要處理新連接的建立、連接關閉以及接收到消息等事件??梢允褂没卣{(diào)函數(shù)來處理這些事件。

代碼實現(xiàn)
#include <iostream>
#include <memory>
#include <functional>// 假設的連接類和消息類
class BaseMessage {
public:using ptr = std::shared_ptr<BaseMessage>;
};class BaseConnection {
public:using ptr = std::shared_ptr<BaseConnection>;
};// 定義回調(diào)類型
using ConnectionCallback = std::function<void(const BaseConnection::ptr&)>;
using CloseCallback = std::function<void(const BaseConnection::ptr&)>;
using MessageCallback = std::function<void(const BaseConnection::ptr&, BaseMessage::ptr&)>;// 服務器類
class Server {
public:void setConnectionCallback(const ConnectionCallback& cb) {connectionCallback = cb;}void setCloseCallback(const CloseCallback& cb) {closeCallback = cb;}void setMessageCallback(const MessageCallback& cb) {messageCallback = cb;}// 模擬新連接事件void simulateNewConnection() {BaseConnection::ptr conn = std::make_shared<BaseConnection>();if (connectionCallback) {connectionCallback(conn);}}// 模擬連接關閉事件void simulateConnectionClose() {BaseConnection::ptr conn = std::make_shared<BaseConnection>();if (closeCallback) {closeCallback(conn);}}// 模擬接收到消息事件void simulateMessageReceived() {BaseConnection::ptr conn = std::make_shared<BaseConnection>();BaseMessage::ptr msg = std::make_shared<BaseMessage>();if (messageCallback) {messageCallback(conn, msg);}}private:ConnectionCallback connectionCallback;CloseCallback closeCallback;MessageCallback messageCallback;
};// 處理新連接的回調(diào)函數(shù)
void handleNewConnection(const BaseConnection::ptr& conn) {std::cout << "New connection established." << std::endl;
}// 處理連接關閉的回調(diào)函數(shù)
void handleConnectionClose(const BaseConnection::ptr& conn) {std::cout << "Connection closed." << std::endl;
}// 處理接收到消息的回調(diào)函數(shù)
void handleMessageReceived(const BaseConnection::ptr& conn, BaseMessage::ptr& msg) {std::cout << "Message received on connection." << std::endl;
}int main() {Server server;// 設置回調(diào)函數(shù)server.setConnectionCallback(handleNewConnection);server.setCloseCallback(handleConnectionClose);server.setMessageCallback(handleMessageReceived);// 模擬事件server.simulateNewConnection();server.simulateMessageReceived();server.simulateConnectionClose();return 0;
}
代碼解釋
  1. 回調(diào)類型定義:定義了 ConnectionCallback、CloseCallbackMessageCallback 三種回調(diào)類型,分別用于處理新連接建立、連接關閉和接收到消息事件。
  2. Server:提供了設置回調(diào)函數(shù)的方法,并模擬了三種事件的發(fā)生,在事件發(fā)生時調(diào)用相應的回調(diào)函數(shù)。
  3. 回調(diào)函數(shù)實現(xiàn):分別實現(xiàn)了處理新連接、連接關閉和接收到消息的回調(diào)函數(shù)。
  4. 主函數(shù)調(diào)用:在 main 函數(shù)中,創(chuàng)建 Server 對象,設置回調(diào)函數(shù),并模擬三種事件的發(fā)生。

案例 3:定時器中的回調(diào)使用

場景說明

實現(xiàn)一個簡單的定時器類,當定時器超時后,執(zhí)行指定的回調(diào)函數(shù)。

代碼實現(xiàn)
#include <iostream>
#include <functional>
#include <thread>
#include <chrono>// 定義定時器回調(diào)類型
using TimerCallback = std::function<void()>;// 定時器類
class Timer {
public:void start(int seconds, TimerCallback callback) {std::thread([seconds, callback]() {std::this_thread::sleep_for(std::chrono::seconds(seconds));if (callback) {callback();}}).detach();}
};// 定時器超時后的回調(diào)函數(shù)
void onTimerExpired() {std::cout << "Timer expired!" << std::endl;
}int main() {Timer timer;// 啟動定時器,設置超時時間為 3 秒,并傳入回調(diào)函數(shù)timer.start(3, onTimerExpired);std::cout << "Timer started. Waiting for expiration..." << std::endl;// 為了避免主線程提前退出,讓主線程休眠一段時間std::this_thread::sleep_for(std::chrono::seconds(5));return 0;
}
代碼解釋
  1. 回調(diào)類型定義TimerCallback 是一個不接受任何參數(shù)且返回值為 void 的可調(diào)用對象類型。
  2. Timerstart 方法接受一個超時時間(秒)和一個 TimerCallback 類型的回調(diào)函數(shù),啟動一個新線程,在指定的超時時間后調(diào)用回調(diào)函數(shù)。
  3. 回調(diào)函數(shù)實現(xiàn)onTimerExpired 是一個普通函數(shù),作為定時器超時后的回調(diào)函數(shù),輸出提示信息。
  4. 主函數(shù)調(diào)用:在 main 函數(shù)中,創(chuàng)建 Timer 對象,啟動定時器并傳入 onTimerExpired 作為回調(diào)函數(shù)。

通過以上案例,你可以看到回調(diào)類型在不同場景下的使用方式,其核心思想是將一個可調(diào)用對象作為參數(shù)傳遞給某個函數(shù)或類,在特定事件發(fā)生時調(diào)用該可調(diào)用對象。

http://www.risenshineclean.com/news/36834.html

相關文章:

  • 優(yōu)化網(wǎng)站關鍵詞網(wǎng)站一般怎么推廣
  • 做便民網(wǎng)站都需要提供什么seo搜索優(yōu)化是什么意思
  • 移動網(wǎng)站開發(fā)基礎知識seo綜合查詢站長工具關鍵詞
  • 地板網(wǎng)站源碼app推廣接單渠道
  • 做電子商務網(wǎng)站需要什么軟件愛站網(wǎng)seo查詢
  • 百度上如何創(chuàng)建自己的網(wǎng)站北京網(wǎng)站seo公司
  • 使用模板建站惠州seo計費管理
  • 展示頁網(wǎng)站怎么做排名網(wǎng)站設計與制作畢業(yè)論文范文
  • 網(wǎng)站建設常用的方法蘇州吳中區(qū)seo關鍵詞優(yōu)化排名
  • 重慶建筑模板生產(chǎn)廠家seo價格查詢公司
  • 公司網(wǎng)站制作流程今天的新聞 聯(lián)播最新消息
  • 豐都網(wǎng)站建設信息流推廣
  • 用html5做的網(wǎng)站素材山東seo百度推廣
  • 做網(wǎng)站的服務器怎么弄什么網(wǎng)站推廣比較好
  • 做優(yōu)惠券網(wǎng)站賺錢嗎seo整站怎么優(yōu)化
  • 在搜狐快站上做網(wǎng)站怎么跳轉(zhuǎn)我的百度賬號登錄
  • wordpress 電商網(wǎng)站百度首頁 百度一下
  • 口碑好的揚州網(wǎng)站建設指數(shù)是什么
  • 淘寶客的api怎么做網(wǎng)站高端定制網(wǎng)站建設公司
  • 企術建站公司網(wǎng)站設計方案
  • wordpress插件放哪兒的獨立站seo是什么
  • 重慶整合營銷網(wǎng)站建設百度百家自媒體平臺注冊
  • 網(wǎng)站建設和網(wǎng)站搭建哪個好合肥百度推廣優(yōu)化排名
  • 五金塑膠 技術支持 東莞網(wǎng)站建設百度競價托管一月多少錢
  • 青海省城鄉(xiāng)建設廳網(wǎng)站寧德市人口
  • 做網(wǎng)站為什么圖片上傳不了整站優(yōu)化系統(tǒng)
  • 深圳網(wǎng)站建設公司地址產(chǎn)品推廣方法有哪些
  • 藁城專業(yè)網(wǎng)站建設百度商城購物
  • 成都網(wǎng)站建設 創(chuàng)新互聯(lián)今日搜索排行榜
  • 重慶樓市最新消息seo用什么工具