国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

網(wǎng)站設(shè)計(jì)一年費(fèi)用有鏈接的網(wǎng)站

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

文章目錄

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


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

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

場(chǎng)景說明

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

代碼實(shí)現(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 是一個(gè)不接受任何參數(shù)且返回值為 void 的可調(diào)用對(duì)象類型。
  2. Shapedraw 方法接受一個(gè) DrawCompleteCallback 類型的參數(shù),在圖形繪制完成后調(diào)用該回調(diào)函數(shù)。
  3. 回調(diào)函數(shù)實(shí)現(xiàn)logDrawCompletion 是一個(gè)普通函數(shù),作為回調(diào)函數(shù)用于記錄圖形繪制完成的日志。
  4. 主函數(shù)調(diào)用:在 main 函數(shù)中,創(chuàng)建 Shape 對(duì)象并調(diào)用 draw 方法,傳入 logDrawCompletion 作為回調(diào)函數(shù)。

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

場(chǎng)景說明

在一個(gè)簡單的網(wǎng)絡(luò)服務(wù)器中,需要處理新連接的建立、連接關(guān)閉以及接收到消息等事件。可以使用回調(diào)函數(shù)來處理這些事件。

代碼實(shí)現(xiàn)
#include <iostream>
#include <memory>
#include <functional>// 假設(shè)的連接類和消息類
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&)>;// 服務(wù)器類
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);}}// 模擬連接關(guān)閉事件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;
}// 處理連接關(guān)閉的回調(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;// 設(shè)置回調(diào)函數(shù)server.setConnectionCallback(handleNewConnection);server.setCloseCallback(handleConnectionClose);server.setMessageCallback(handleMessageReceived);// 模擬事件server.simulateNewConnection();server.simulateMessageReceived();server.simulateConnectionClose();return 0;
}
代碼解釋
  1. 回調(diào)類型定義:定義了 ConnectionCallbackCloseCallbackMessageCallback 三種回調(diào)類型,分別用于處理新連接建立、連接關(guān)閉和接收到消息事件。
  2. Server:提供了設(shè)置回調(diào)函數(shù)的方法,并模擬了三種事件的發(fā)生,在事件發(fā)生時(shí)調(diào)用相應(yīng)的回調(diào)函數(shù)。
  3. 回調(diào)函數(shù)實(shí)現(xiàn):分別實(shí)現(xiàn)了處理新連接、連接關(guān)閉和接收到消息的回調(diào)函數(shù)。
  4. 主函數(shù)調(diào)用:在 main 函數(shù)中,創(chuàng)建 Server 對(duì)象,設(shè)置回調(diào)函數(shù),并模擬三種事件的發(fā)生。

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

場(chǎng)景說明

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

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

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

http://m.aloenet.com.cn/news/36834.html

相關(guān)文章:

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