{"id":814,"date":"2026-01-26T22:46:21","date_gmt":"2026-01-26T14:46:21","guid":{"rendered":"https:\/\/www.ixriver.com\/?p=814"},"modified":"2026-01-26T22:46:21","modified_gmt":"2026-01-26T14:46:21","slug":"%e7%8e%b0%e4%bb%a3c%e6%95%99%e7%a8%8b","status":"publish","type":"post","link":"https:\/\/www.ai.ixriver.com\/?p=814","title":{"rendered":"\u73b0\u4ee3C++\u6559\u7a0b"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_65 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title \" >\u76ee\u5f55<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#%E7%AC%AC%E4%B8%80%E9%83%A8%E5%88%86_C98\" title=\"\u7b2c\u4e00\u90e8\u5206 C++98\">\u7b2c\u4e00\u90e8\u5206 C++98<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#%E7%AC%AC_1_%E7%AB%A0_%E6%8C%87%E5%8D%97\" title=\"\u7b2c 1 \u7ae0 \u6307\u5357\">\u7b2c 1 \u7ae0 \u6307\u5357<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#11_%E7%BC%96%E7%A0%81%E8%A7%84%E8%8C%83\" title=\"1.1 \u7f16\u7801\u89c4\u8303\">1.1 \u7f16\u7801\u89c4\u8303<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#12_%E7%BC%96%E7%A8%8B%E6%8C%87%E5%AF%BC\" title=\"1.2 \u7f16\u7a0b\u6307\u5bfc\">1.2 \u7f16\u7a0b\u6307\u5bfc<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#%E5%B0%86%E6%96%87%E4%BB%B6%E9%97%B4%E7%9A%84%E7%BC%96%E8%AF%91%E4%BE%9D%E8%B5%96%E6%80%A7%E9%99%8D%E8%87%B3%E6%9C%80%E4%BD%8E\" title=\"\u5c06\u6587\u4ef6\u95f4\u7684\u7f16\u8bd1\u4f9d\u8d56\u6027\u964d\u81f3\u6700\u4f4e\">\u5c06\u6587\u4ef6\u95f4\u7684\u7f16\u8bd1\u4f9d\u8d56\u6027\u964d\u81f3\u6700\u4f4e<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#%E7%AC%AC_2_%E7%AB%A0_%E7%B1%BB\" title=\"\u7b2c 2 \u7ae0 \u7c7b\">\u7b2c 2 \u7ae0 \u7c7b<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#21_C_%E5%AF%B9%E8%B1%A1%E7%9A%84%E5%86%85%E5%AD%98%E5%B8%83%E5%B1%80\" title=\"2.1 C++ \u5bf9\u8c61\u7684\u5185\u5b58\u5e03\u5c40\">2.1 C++ \u5bf9\u8c61\u7684\u5185\u5b58\u5e03\u5c40<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#211_%E5%A4%A7%E5%B0%8F%E5%92%8C%E5%B8%83%E5%B1%80\" title=\"2.1.1 \u5927\u5c0f\u548c\u5e03\u5c40\">2.1.1 \u5927\u5c0f\u548c\u5e03\u5c40<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#22_%E5%8D%95%E9%87%8D%E7%BB%A7%E6%89%BF\" title=\"2.2 \u5355\u91cd\u7ee7\u627f\">2.2 \u5355\u91cd\u7ee7\u627f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#23_%E5%A4%9A%E9%87%8D%E7%BB%A7%E6%89%BF\" title=\"2.3 \u591a\u91cd\u7ee7\u627f\">2.3 \u591a\u91cd\u7ee7\u627f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#24_%E9%87%8D%E5%A4%8D%E7%BB%A7%E6%89%BF\" title=\"2.4 \u91cd\u590d\u7ee7\u627f\">2.4 \u91cd\u590d\u7ee7\u627f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#25_%E8%99%9A%E7%BB%A7%E6%89%BF\" title=\"2.5 \u865a\u7ee7\u627f\">2.5 \u865a\u7ee7\u627f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#26_%E9%BB%98%E8%AE%A4%E5%87%BD%E6%95%B0%E6%8E%A7%E5%88%B6%EF%BC%88%E7%BC%96%E8%AF%91%E5%99%A8%E7%94%9F%E6%88%90%E5%87%BD%E6%95%B0%E8%A7%84%E5%88%99%EF%BC%89\" title=\"2.6 \u9ed8\u8ba4\u51fd\u6570\u63a7\u5236\uff08\u7f16\u8bd1\u5668\u751f\u6210\u51fd\u6570\u89c4\u5219\uff09\">2.6 \u9ed8\u8ba4\u51fd\u6570\u63a7\u5236\uff08\u7f16\u8bd1\u5668\u751f\u6210\u51fd\u6570\u89c4\u5219\uff09<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#261_%E7%94%9F%E6%88%90%E8%A7%84%E5%88%99%EF%BC%88%E9%BB%98%E8%AE%A4%E7%94%9F%E6%88%90%E4%BD%8E%E4%BC%98%E5%85%88%E7%BA%A7%E5%87%BD%E6%95%B0%EF%BC%89\" title=\"2.6.1 \u751f\u6210\u89c4\u5219\uff08\u9ed8\u8ba4\u751f\u6210\u4f4e\u4f18\u5148\u7ea7\u51fd\u6570\uff09\">2.6.1 \u751f\u6210\u89c4\u5219\uff08\u9ed8\u8ba4\u751f\u6210\u4f4e\u4f18\u5148\u7ea7\u51fd\u6570\uff09<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#27_%E6%88%90%E5%91%98%E7%BB%A7%E6%89%BF%E5%B1%9E%E6%80%A7\" title=\"2.7 \u6210\u5458\u7ee7\u627f\u5c5e\u6027\">2.7 \u6210\u5458\u7ee7\u627f\u5c5e\u6027<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#28_%E5%85%B6%E5%AE%83%E7%89%B9%E6%80%A7\" title=\"2.8 \u5176\u5b83\u7279\u6027\">2.8 \u5176\u5b83\u7279\u6027<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#%E7%AC%AC_3_%E7%AB%A0_%E5%AE%B9%E5%99%A8%E7%B1%BB%E5%9E%8B\" title=\"\u7b2c 3 \u7ae0 \u5bb9\u5668\u7c7b\u578b\">\u7b2c 3 \u7ae0 \u5bb9\u5668\u7c7b\u578b<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#31_std_tuple_%E5%92%8C_std_array\" title=\"3.1 std::tuple \u548c std::array\">3.1 std::tuple \u548c std::array<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#%E7%AC%AC_4_%E7%AB%A0_std_string\" title=\"\u7b2c 4 \u7ae0 std::string\">\u7b2c 4 \u7ae0 std::string<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#41_%E6%9E%84%E9%80%A0%E5%87%BD%E6%95%B0\" title=\"4.1 \u6784\u9020\u51fd\u6570\">4.1 \u6784\u9020\u51fd\u6570<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#42_%E8%B7%A8%E6%A8%A1%E5%9D%97%E4%BC%A0%E9%80%92%E9%97%AE%E9%A2%98\" title=\"4.2 \u8de8\u6a21\u5757\u4f20\u9012\u95ee\u9898\">4.2 \u8de8\u6a21\u5757\u4f20\u9012\u95ee\u9898<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-22\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#43_STL%E7%B1%BB%E8%B7%A8%E6%A8%A1%E5%9D%97%E5%AD%98%E5%9C%A8%E9%97%AE%E9%A2%98%E7%9A%84%E6%9C%AC%E8%B4%A8\" title=\"4.3 STL\u7c7b\u8de8\u6a21\u5757\u5b58\u5728\u95ee\u9898\u7684\u672c\u8d28\">4.3 STL\u7c7b\u8de8\u6a21\u5757\u5b58\u5728\u95ee\u9898\u7684\u672c\u8d28<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-23\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#44_%E8%A7%A3%E5%86%B3%E6%96%B9%E6%B3%95\" title=\"4.4 \u89e3\u51b3\u65b9\u6cd5\">4.4 \u89e3\u51b3\u65b9\u6cd5<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-24\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#%E7%AC%AC_5_%E7%AB%A0_%E5%BC%BA%E7%B1%BB%E5%9E%8B%E6%9E%9A%E4%B8%BE\" title=\"\u7b2c 5 \u7ae0 \u5f3a\u7c7b\u578b\u679a\u4e3e\">\u7b2c 5 \u7ae0 \u5f3a\u7c7b\u578b\u679a\u4e3e<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-25\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#51_%E5%8E%9F%E6%9C%89%E6%9E%9A%E4%B8%BE%E7%B1%BB%E5%9E%8B%E7%9A%84%E7%BC%BA%E9%99%B7\" title=\"5.1 \u539f\u6709\u679a\u4e3e\u7c7b\u578b\u7684\u7f3a\u9677\">5.1 \u539f\u6709\u679a\u4e3e\u7c7b\u578b\u7684\u7f3a\u9677<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-26\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#52_%E5%BC%BA%E7%B1%BB%E5%9E%8B%E6%9E%9A%E4%B8%BE%E5%AE%9A%E4%B9%89\" title=\"5.2 \u5f3a\u7c7b\u578b\u679a\u4e3e\u5b9a\u4e49\">5.2 \u5f3a\u7c7b\u578b\u679a\u4e3e\u5b9a\u4e49<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-27\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#53_%E5%8E%9F%E6%9C%89%E6%9E%9A%E4%B8%BE%E7%B1%BB%E5%9E%8B%E7%9A%84%E6%89%A9%E5%B1%95\" title=\"5.3 \u539f\u6709\u679a\u4e3e\u7c7b\u578b\u7684\u6269\u5c55\">5.3 \u539f\u6709\u679a\u4e3e\u7c7b\u578b\u7684\u6269\u5c55<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-28\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#%E7%AC%AC%E4%BA%8C%E9%83%A8%E5%88%86_C11\" title=\"\u7b2c\u4e8c\u90e8\u5206 C++11\">\u7b2c\u4e8c\u90e8\u5206 C++11<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-29\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#%E7%AC%AC_1_%E7%AB%A0_%E7%B1%BB%E5%9E%8B%E6%8E%A8%E5%AF%BC\" title=\"\u7b2c 1 \u7ae0 \u7c7b\u578b\u63a8\u5bfc\">\u7b2c 1 \u7ae0 \u7c7b\u578b\u63a8\u5bfc<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-30\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#11_%E6%A8%A1%E6%9D%BF%E7%B1%BB%E5%9E%8B%E6%8E%A8%E5%AF%BC\" title=\"1.1 \u6a21\u677f\u7c7b\u578b\u63a8\u5bfc\">1.1 \u6a21\u677f\u7c7b\u578b\u63a8\u5bfc<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-31\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#%E6%83%85%E5%BD%A21%EF%BC%9AParamType_%E6%98%AF%E4%B8%80%E4%B8%AA%E6%8C%87%E9%92%88%E6%88%96%E8%80%85%E5%BC%95%E7%94%A8%E7%B1%BB%E5%9E%8B%EF%BC%8C%E4%BD%86%E4%B8%8D%E6%98%AF%E4%B8%80%E4%B8%AA%E9%80%9A%E7%94%A8%E5%BC%95%E7%94%A8\" title=\"\u60c5\u5f621\uff1aParamType \u662f\u4e00\u4e2a\u6307\u9488\u6216\u8005\u5f15\u7528\u7c7b\u578b\uff0c\u4f46\u4e0d\u662f\u4e00\u4e2a\u901a\u7528\u5f15\u7528\">\u60c5\u5f621\uff1aParamType \u662f\u4e00\u4e2a\u6307\u9488\u6216\u8005\u5f15\u7528\u7c7b\u578b\uff0c\u4f46\u4e0d\u662f\u4e00\u4e2a\u901a\u7528\u5f15\u7528<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-32\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#%E6%83%85%E5%BD%A22%EF%BC%9AParamType_%E6%98%AF%E4%B8%80%E4%B8%AA%E9%80%9A%E7%94%A8%E5%BC%95%E7%94%A8\" title=\"\u60c5\u5f622\uff1aParamType \u662f\u4e00\u4e2a\u901a\u7528\u5f15\u7528\">\u60c5\u5f622\uff1aParamType \u662f\u4e00\u4e2a\u901a\u7528\u5f15\u7528<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-33\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#%E6%83%85%E5%BD%A23%EF%BC%9AParamType_%E6%97%A2%E4%B8%8D%E6%98%AF%E6%8C%87%E9%92%88%E4%B9%9F%E4%B8%8D%E6%98%AF%E5%BC%95%E7%94%A8\" title=\"\u60c5\u5f623\uff1aParamType \u65e2\u4e0d\u662f\u6307\u9488\u4e5f\u4e0d\u662f\u5f15\u7528\">\u60c5\u5f623\uff1aParamType \u65e2\u4e0d\u662f\u6307\u9488\u4e5f\u4e0d\u662f\u5f15\u7528<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-34\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#12_auto%E7%B1%BB%E5%9E%8B%E6%8E%A8%E5%AF%BC\" title=\"1.2 auto\u7c7b\u578b\u63a8\u5bfc\">1.2 auto\u7c7b\u578b\u63a8\u5bfc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-35\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#13_decltype\" title=\"1.3 decltype\">1.3 decltype<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-36\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#%E7%AC%AC_2_%E7%AB%A0_%E5%8F%B3%E5%80%BC\" title=\"\u7b2c 2 \u7ae0 \u53f3\u503c\">\u7b2c 2 \u7ae0 \u53f3\u503c<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-37\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#21_%E5%9F%BA%E6%9C%AC%E6%A6%82%E5%BF%B5\" title=\"2.1 \u57fa\u672c\u6982\u5ff5\">2.1 \u57fa\u672c\u6982\u5ff5<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-38\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#22_%E5%B7%A6%E5%80%BC%E5%92%8C%E5%8F%B3%E5%80%BC%E5%BC%95%E7%94%A8\" title=\"2.2 \u5de6\u503c\u548c\u53f3\u503c\u5f15\u7528\">2.2 \u5de6\u503c\u548c\u53f3\u503c\u5f15\u7528<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-39\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#221_%E5%BC%95%E7%94%A8%E7%B1%BB%E5%9E%8B%E5%88%A4%E6%96%AD\" title=\"2.2.1 \u5f15\u7528\u7c7b\u578b\u5224\u65ad\">2.2.1 \u5f15\u7528\u7c7b\u578b\u5224\u65ad<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-40\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#222_%E7%A7%BB%E5%8A%A8%E7%B1%BB%E5%9E%8B%E5%88%A4%E6%96%AD\" title=\"2.2.2 \u79fb\u52a8\u7c7b\u578b\u5224\u65ad\">2.2.2 \u79fb\u52a8\u7c7b\u578b\u5224\u65ad<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-41\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#23_%E5%BC%95%E7%94%A8%E6%8A%98%E5%8F%A0%E4%B8%8E%E5%AE%8C%E7%BE%8E%E8%BD%AC%E5%8F%91\" title=\"2.3 \u5f15\u7528\u6298\u53e0\u4e0e\u5b8c\u7f8e\u8f6c\u53d1\">2.3 \u5f15\u7528\u6298\u53e0\u4e0e\u5b8c\u7f8e\u8f6c\u53d1<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-42\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#24_%E7%90%86%E8%A7%A3std_move%E5%92%8Cstd_forward\" title=\"2.4 \u7406\u89e3std::move\u548cstd::forward\">2.4 \u7406\u89e3std::move\u548cstd::forward<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-43\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#25_%E5%8C%BA%E5%88%86%E9%80%9A%E7%94%A8%E5%BC%95%E7%94%A8%E5%92%8C%E5%8F%B3%E5%80%BC%E5%BC%95%E7%94%A8\" title=\"2.5 \u533a\u5206\u901a\u7528\u5f15\u7528\u548c\u53f3\u503c\u5f15\u7528\">2.5 \u533a\u5206\u901a\u7528\u5f15\u7528\u548c\u53f3\u503c\u5f15\u7528<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-44\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#26_%E5%AF%B9%E5%8F%B3%E5%80%BC%E5%BC%95%E7%94%A8%E4%BD%BF%E7%94%A8std_move%EF%BC%8C%E5%AF%B9%E9%80%9A%E7%94%A8%E5%BC%95%E7%94%A8%E4%BD%BF%E7%94%A8std_forward\" title=\"2.6 \u5bf9\u53f3\u503c\u5f15\u7528\u4f7f\u7528std::move\uff0c\u5bf9\u901a\u7528\u5f15\u7528\u4f7f\u7528std::forward\">2.6 \u5bf9\u53f3\u503c\u5f15\u7528\u4f7f\u7528std::move\uff0c\u5bf9\u901a\u7528\u5f15\u7528\u4f7f\u7528std::forward<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-45\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#27_%E9%80%9A%E7%94%A8%E5%BC%95%E7%94%A8%E9%87%8D%E8%BD%BD\" title=\"2.7 \u901a\u7528\u5f15\u7528\u91cd\u8f7d\">2.7 \u901a\u7528\u5f15\u7528\u91cd\u8f7d<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-46\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#28_%E5%AE%8C%E7%BE%8E%E8%BD%AC%E5%8F%91%E5%A4%B1%E8%B4%A5%E7%9A%84%E6%83%85%E5%BD%A2\" title=\"2.8 \u5b8c\u7f8e\u8f6c\u53d1\u5931\u8d25\u7684\u60c5\u5f62\">2.8 \u5b8c\u7f8e\u8f6c\u53d1\u5931\u8d25\u7684\u60c5\u5f62<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-47\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#%E7%AC%AC_3_%E7%AB%A0_Lambda_%E8%A1%A8%E8%BE%BE%E5%BC%8F\" title=\"\u7b2c 3 \u7ae0 Lambda \u8868\u8fbe\u5f0f\">\u7b2c 3 \u7ae0 Lambda \u8868\u8fbe\u5f0f<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-48\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#31_Lambda%E5%92%8C%E5%87%BD%E6%95%B0%E5%AF%B9%E8%B1%A1%EF%BC%88%E4%BB%BF%E5%87%BD%E6%95%B0%EF%BC%89\" title=\"3.1 Lambda\u548c\u51fd\u6570\u5bf9\u8c61\uff08\u4eff\u51fd\u6570\uff09\">3.1 Lambda\u548c\u51fd\u6570\u5bf9\u8c61\uff08\u4eff\u51fd\u6570\uff09<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-49\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#311_Lambda%E5%92%8C%E4%BB%BF%E5%87%BD%E6%95%B0%E7%9A%84%E5%8C%BA%E5%88%AB\" title=\"3.1.1 Lambda\u548c\u4eff\u51fd\u6570\u7684\u533a\u522b\">3.1.1 Lambda\u548c\u4eff\u51fd\u6570\u7684\u533a\u522b<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-50\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#312_Lambda%E6%8D%95%E6%8D%89%E5%88%97%E8%A1%A8\" title=\"3.1.2 Lambda\u6355\u6349\u5217\u8868\">3.1.2 Lambda\u6355\u6349\u5217\u8868<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-51\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#32_%E5%BB%BA%E8%AE%AE\" title=\"3.2 \u5efa\u8bae\">3.2 \u5efa\u8bae<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-52\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#%E7%AC%AC_4_%E7%AB%A0_%E6%99%BA%E8%83%BD%E6%8C%87%E9%92%88\" title=\"\u7b2c 4 \u7ae0 \u667a\u80fd\u6307\u9488\">\u7b2c 4 \u7ae0 \u667a\u80fd\u6307\u9488<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-53\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#41_%E6%99%BA%E8%83%BD%E6%8C%87%E9%92%88%E6%A6%82%E8%A7%88\" title=\"4.1 \u667a\u80fd\u6307\u9488\u6982\u89c8\">4.1 \u667a\u80fd\u6307\u9488\u6982\u89c8<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-54\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#42_shared_ptr_%E7%89%B9%E6%80%A7\" title=\"4.2 shared_ptr \u7279\u6027\">4.2 shared_ptr \u7279\u6027<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-55\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#421_shared_ptr_%E6%9E%84%E9%80%A0%E6%96%B9%E5%BC%8F%E5%AF%B9%E6%AF%94\" title=\"4.2.1 shared_ptr \u6784\u9020\u65b9\u5f0f\u5bf9\u6bd4\">4.2.1 shared_ptr \u6784\u9020\u65b9\u5f0f\u5bf9\u6bd4<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-56\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#43_unique_ptr_%E7%89%B9%E6%80%A7\" title=\"4.3 unique_ptr \u7279\u6027\">4.3 unique_ptr \u7279\u6027<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-57\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#44_weak_ptr_%E7%89%B9%E6%80%A7\" title=\"4.4 weak_ptr \u7279\u6027\">4.4 weak_ptr \u7279\u6027<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-58\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#45_shared_ptr%E5%AE%9E%E7%8E%B0%E8%A6%81%E7%82%B9\" title=\"4.5 shared_ptr\u5b9e\u73b0\u8981\u70b9\">4.5 shared_ptr\u5b9e\u73b0\u8981\u70b9<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-59\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#46_%E7%A9%BA%E6%8C%87%E9%92%88%E7%B1%BB%E5%9E%8B\" title=\"4.6 \u7a7a\u6307\u9488\u7c7b\u578b\">4.6 \u7a7a\u6307\u9488\u7c7b\u578b<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-60\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#461_NULL%E6%8C%87%E9%92%88%E7%9A%84%E7%BC%BA%E9%99%B7\" title=\"4.6.1 NULL\u6307\u9488\u7684\u7f3a\u9677\">4.6.1 NULL\u6307\u9488\u7684\u7f3a\u9677<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-61\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#462_nullptr_%E6%8C%87%E9%92%88\" title=\"4.6.2 nullptr \u6307\u9488\">4.6.2 nullptr \u6307\u9488<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-62\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#%E7%AC%AC_5_%E7%AB%A0_%E5%85%B6%E5%AE%83%E7%89%B9%E6%80%A7\" title=\"\u7b2c 5 \u7ae0 \u5176\u5b83\u7279\u6027\">\u7b2c 5 \u7ae0 \u5176\u5b83\u7279\u6027<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-63\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#51_%E5%B8%B8%E9%87%8F%E8%A1%A8%E8%BE%BE%E5%BC%8F\" title=\"5.1 \u5e38\u91cf\u8868\u8fbe\u5f0f\">5.1 \u5e38\u91cf\u8868\u8fbe\u5f0f<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-64\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#511_%E5%B8%B8%E9%87%8F%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%87%BD%E6%95%B0\" title=\"5.1.1 \u5e38\u91cf\u8868\u8fbe\u5f0f\u51fd\u6570\">5.1.1 \u5e38\u91cf\u8868\u8fbe\u5f0f\u51fd\u6570<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-65\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#512_%E5%B8%B8%E9%87%8F%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%80%BC\" title=\"5.1.2 \u5e38\u91cf\u8868\u8fbe\u5f0f\u503c\">5.1.2 \u5e38\u91cf\u8868\u8fbe\u5f0f\u503c<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-66\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#513_const_%E4%BA%8C%E4%B9%89%E6%80%A7\" title=\"5.1.3 const \u4e8c\u4e49\u6027\">5.1.3 const \u4e8c\u4e49\u6027<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-67\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#52_for%E5%BE%AA%E7%8E%AF\" title=\"5.2 for\u5faa\u73af\">5.2 for\u5faa\u73af<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-68\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#53_%E7%B1%BB%E5%9E%8B%E8%BD%AC%E6%8D%A2\" title=\"5.3 \u7c7b\u578b\u8f6c\u6362\">5.3 \u7c7b\u578b\u8f6c\u6362<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-69\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#54_%E9%A1%B6%E5%B1%82const\" title=\"5.4 \u9876\u5c42const\">5.4 \u9876\u5c42const<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-70\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#55_std_function\" title=\"5.5 std::function\">5.5 std::function<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-71\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#56_%E6%96%AD%E8%A8%80%E5%92%8C%E5%BC%82%E5%B8%B8\" title=\"5.6 \u65ad\u8a00\u548c\u5f02\u5e38\">5.6 \u65ad\u8a00\u548c\u5f02\u5e38<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-72\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#57_%E9%80%9A%E7%94%A8%E5%B1%9E%E6%80%A7\" title=\"5.7 \u901a\u7528\u5c5e\u6027\">5.7 \u901a\u7528\u5c5e\u6027<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-73\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#58_%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F\" title=\"5.8 \u6b63\u5219\u8868\u8fbe\u5f0f\">5.8 \u6b63\u5219\u8868\u8fbe\u5f0f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-74\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#59_std_bind\" title=\"5.9 std::bind\">5.9 std::bind<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-75\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#%E7%AC%AC_6_%E7%AB%A0_%E5%A4%9A%E7%BA%BF%E7%A8%8B\" title=\"\u7b2c 6 \u7ae0 \u591a\u7ebf\u7a0b\">\u7b2c 6 \u7ae0 \u591a\u7ebf\u7a0b<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-76\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#61_std_thread%E7%89%B9%E6%80%A7\" title=\"6.1 std::thread\u7279\u6027\">6.1 std::thread\u7279\u6027<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-77\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#62_%E9%94%81\" title=\"6.2 \u9501\">6.2 \u9501<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-78\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#63_std_condition_variable\" title=\"6.3 std::condition_variable\">6.3 std::condition_variable<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-79\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#64_%E5%86%85%E5%AD%98%E6%A8%A1%E5%9E%8B\" title=\"6.4 \u5185\u5b58\u6a21\u578b\">6.4 \u5185\u5b58\u6a21\u578b<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-80\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#641_%E9%A1%BA%E5%BA%8F%E4%B8%80%E8%87%B4%E6%80%A7%EF%BC%88C%E5%8E%9F%E5%AD%90%E7%B1%BB%E5%9E%8B%E9%BB%98%E8%AE%A4%E5%86%85%E5%AD%98%E6%A8%A1%E5%9E%8B%EF%BC%89\" title=\"6.4.1 \u987a\u5e8f\u4e00\u81f4\u6027\uff08C++\u539f\u5b50\u7c7b\u578b\u9ed8\u8ba4\u5185\u5b58\u6a21\u578b\uff09\">6.4.1 \u987a\u5e8f\u4e00\u81f4\u6027\uff08C++\u539f\u5b50\u7c7b\u578b\u9ed8\u8ba4\u5185\u5b58\u6a21\u578b\uff09<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-81\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#642_%E5%86%85%E5%AD%98%E6%A8%A1%E5%9E%8B%E6%9E%9A%E4%B8%BE%E5%80%BC\" title=\"6.4.2 \u5185\u5b58\u6a21\u578b\u679a\u4e3e\u503c\">6.4.2 \u5185\u5b58\u6a21\u578b\u679a\u4e3e\u503c<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-82\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#65_%E7%BA%BF%E7%A8%8B%E7%9A%84%E5%B1%80%E9%83%A8%E5%AD%98%E5%82%A8\" title=\"6.5 \u7ebf\u7a0b\u7684\u5c40\u90e8\u5b58\u50a8\">6.5 \u7ebf\u7a0b\u7684\u5c40\u90e8\u5b58\u50a8<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-83\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#66_%E7%BB%88%E6%AD%A2%E5%87%BD%E6%95%B0\" title=\"6.6 \u7ec8\u6b62\u51fd\u6570\">6.6 \u7ec8\u6b62\u51fd\u6570<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-84\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#67_std_ref\" title=\"6.7 std::ref\">6.7 std::ref<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-85\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#68_std_future\" title=\"6.8 std::future\">6.8 std::future<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-86\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#69_std_async\" title=\"6.9 std::async\">6.9 std::async<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-87\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#610_std_call_once\" title=\"6.10 std::call_once\">6.10 std::call_once<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-88\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#611_std_packaged_task\" title=\"6.11 std::packaged_task\">6.11 std::packaged_task<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-89\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#612_std_promise\" title=\"6.12 std::promise\">6.12 std::promise<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-90\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#%E7%AC%AC_7_%E7%AB%A0_%E6%97%B6%E9%92%9F\" title=\"\u7b2c 7 \u7ae0 \u65f6\u949f\">\u7b2c 7 \u7ae0 \u65f6\u949f<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-91\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#71_duration\" title=\"7.1 duration\">7.1 duration<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-92\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#72_time_point\" title=\"7.2 time_point\">7.2 time_point<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-93\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#73_Clocks\" title=\"7.3 Clocks\">7.3 Clocks<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-94\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#%E7%AC%AC_8_%E7%AB%A0_%E6%A8%A1%E6%9D%BF\" title=\"\u7b2c 8 \u7ae0 \u6a21\u677f\">\u7b2c 8 \u7ae0 \u6a21\u677f<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-95\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#81_%E5%8F%98%E9%95%BF%E6%A8%A1%E6%9D%BF\" title=\"8.1 \u53d8\u957f\u6a21\u677f\">8.1 \u53d8\u957f\u6a21\u677f<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-96\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#811_%E6%A8%A1%E6%9D%BF%E5%8F%82%E6%95%B0%E5%8C%85\" title=\"8.1.1 \u6a21\u677f\u53c2\u6570\u5305\">8.1.1 \u6a21\u677f\u53c2\u6570\u5305<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-97\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#812_%E5%8C%85%E6%89%A9%E5%B1%95\" title=\"8.1.2 \u5305\u6269\u5c55\">8.1.2 \u5305\u6269\u5c55<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-98\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#82_%E6%A8%A1%E6%9D%BF%E5%88%AB%E5%90%8Dusing\" title=\"8.2 \u6a21\u677f\u522b\u540dusing\">8.2 \u6a21\u677f\u522b\u540dusing<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-99\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#%E7%AC%AC_9_%E7%AB%A0_Unicode\" title=\"\u7b2c 9 \u7ae0 Unicode\">\u7b2c 9 \u7ae0 Unicode<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-100\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#91_C11%E4%B8%AD%E7%9A%84Unicode%E6%94%AF%E6%8C%81\" title=\"9.1 C++11\u4e2d\u7684Unicode\u652f\u6301\">9.1 C++11\u4e2d\u7684Unicode\u652f\u6301<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-101\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#%E7%AC%AC_10_%E7%AB%A0_%E8%B0%83%E8%AF%95%E5%B7%A5%E5%85%B7\" title=\"\u7b2c 10 \u7ae0 \u8c03\u8bd5\u5de5\u5177\">\u7b2c 10 \u7ae0 \u8c03\u8bd5\u5de5\u5177<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-102\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#101_%E7%AC%A6%E5%8F%B7%E6%9F%A5%E7%9C%8B%E5%B7%A5%E5%85%B7\" title=\"10.1 \u7b26\u53f7\u67e5\u770b\u5de5\u5177\">10.1 \u7b26\u53f7\u67e5\u770b\u5de5\u5177<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-103\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#%E7%AC%AC%E4%B8%89%E9%83%A8%E5%88%86_C14\" title=\"\u7b2c\u4e09\u90e8\u5206 C++14\">\u7b2c\u4e09\u90e8\u5206 C++14<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-104\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#%E7%AC%AC_1_%E7%AB%A0_C14%E6%96%B0%E7%89%B9%E6%80%A7\" title=\"\u7b2c 1 \u7ae0 C++14\u65b0\u7279\u6027\">\u7b2c 1 \u7ae0 C++14\u65b0\u7279\u6027<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-105\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#11_%E5%87%BD%E6%95%B0%E8%BF%94%E5%9B%9E%E5%80%BC%E7%B1%BB%E5%9E%8B%E6%8E%A8%E5%AF%BC%E4%BC%98%E5%8C%96\" title=\"1.1 \u51fd\u6570\u8fd4\u56de\u503c\u7c7b\u578b\u63a8\u5bfc\u4f18\u5316\">1.1 \u51fd\u6570\u8fd4\u56de\u503c\u7c7b\u578b\u63a8\u5bfc\u4f18\u5316<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-106\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#12_Lambda%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%8F%AF%E4%BB%A5auto%E5%8F%82%E6%95%B0%E5%92%8C%E8%BF%94%E5%9B%9E%E5%80%BC\" title=\"1.2 Lambda\u8868\u8fbe\u5f0f\u53ef\u4ee5auto\u53c2\u6570\u548c\u8fd4\u56de\u503c\">1.2 Lambda\u8868\u8fbe\u5f0f\u53ef\u4ee5auto\u53c2\u6570\u548c\u8fd4\u56de\u503c<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-107\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#13_%E5%8F%98%E9%87%8F%E6%A8%A1%E6%9D%BF\" title=\"1.3 \u53d8\u91cf\u6a21\u677f\">1.3 \u53d8\u91cf\u6a21\u677f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-108\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#14_%E5%88%AB%E5%90%8D%E6%A8%A1%E6%9D%BF\" title=\"1.4 \u522b\u540d\u6a21\u677f\">1.4 \u522b\u540d\u6a21\u677f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-109\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#15_%E5%85%B6%E5%AE%83%E7%89%B9%E6%80%A7\" title=\"1.5 \u5176\u5b83\u7279\u6027\">1.5 \u5176\u5b83\u7279\u6027<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-110\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#%E7%AC%AC%E5%9B%9B%E9%83%A8%E5%88%86_C17\" title=\"\u7b2c\u56db\u90e8\u5206 C++17\">\u7b2c\u56db\u90e8\u5206 C++17<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-111\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#%E7%AC%AC_1%E7%AB%A0_%E6%96%B0%E5%A2%9E%E7%89%B9%E6%80%A7\" title=\"\u7b2c 1\u7ae0 \u65b0\u589e\u7279\u6027\">\u7b2c 1\u7ae0 \u65b0\u589e\u7279\u6027<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-112\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#11_%E6%9E%84%E9%80%A0%E5%87%BD%E6%95%B0%E6%A8%A1%E6%9D%BF%E6%8E%A8%E5%AF%BC\" title=\"1.1 \u6784\u9020\u51fd\u6570\u6a21\u677f\u63a8\u5bfc\">1.1 \u6784\u9020\u51fd\u6570\u6a21\u677f\u63a8\u5bfc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-113\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#12_%E7%BB%93%E6%9E%84%E5%8C%96%E7%BB%91%E5%AE%9A\" title=\"1.2 \u7ed3\u6784\u5316\u7ed1\u5b9a\">1.2 \u7ed3\u6784\u5316\u7ed1\u5b9a<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-114\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#13_if-switch%E8%AF%AD%E5%8F%A5%E5%85%81%E8%AE%B8%E5%88%9D%E5%A7%8B%E5%8C%96\" title=\"1.3 if-switch\u8bed\u53e5\u5141\u8bb8\u521d\u59cb\u5316\">1.3 if-switch\u8bed\u53e5\u5141\u8bb8\u521d\u59cb\u5316<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-115\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#14_%E5%86%85%E8%81%94%E5%8F%98%E9%87%8F\" title=\"1.4 \u5185\u8054\u53d8\u91cf\">1.4 \u5185\u8054\u53d8\u91cf<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-116\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#15_%E6%8A%98%E5%8F%A0%E8%A1%A8%E8%BE%BE%E5%BC%8F\" title=\"1.5 \u6298\u53e0\u8868\u8fbe\u5f0f\">1.5 \u6298\u53e0\u8868\u8fbe\u5f0f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-117\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#16_namespace%E5%B5%8C%E5%A5%97\" title=\"1.6 namespace\u5d4c\u5957\">1.6 namespace\u5d4c\u5957<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-118\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#17_%E5%85%B6%E5%AE%83%E7%89%B9%E6%80%A7\" title=\"1.7 \u5176\u5b83\u7279\u6027\">1.7 \u5176\u5b83\u7279\u6027<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-119\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#%E7%AC%AC%E4%BA%94%E9%83%A8%E5%88%86_C20\" title=\"\u7b2c\u4e94\u90e8\u5206 C++20\">\u7b2c\u4e94\u90e8\u5206 C++20<\/a><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-120\" href=\"https:\/\/www.ai.ixriver.com\/?p=814\/#%E7%AC%AC_1%E7%AB%A0_%E6%96%B0%E5%A2%9E%E7%89%B9%E6%80%A7-2\" title=\"\u7b2c 1\u7ae0 \u65b0\u589e\u7279\u6027\">\u7b2c 1\u7ae0 \u65b0\u589e\u7279\u6027<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h1><span class=\"ez-toc-section\" id=\"%E7%AC%AC%E4%B8%80%E9%83%A8%E5%88%86_C98\"><\/span>\u7b2c\u4e00\u90e8\u5206 C++98<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<h2><span class=\"ez-toc-section\" id=\"%E7%AC%AC_1_%E7%AB%A0_%E6%8C%87%E5%8D%97\"><\/span>\u7b2c 1 \u7ae0 \u6307\u5357<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"11_%E7%BC%96%E7%A0%81%E8%A7%84%E8%8C%83\"><\/span>1.1 \u7f16\u7801\u89c4\u8303<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><strong>\u6587\u4ef6\u540d<\/strong>\uff1a\u5c0f\u5199\u5b57\u6bcd\u5f00\u5934\uff0c\u4e0b\u5212\u7ebf<\/li>\n<li><strong>\u7c7b<\/strong>\uff1a\u5927\u5199\u5b57\u6bcd\u5f00\u5934\uff0c\u9a7c\u5cf0<\/li>\n<li><strong>\u65b9\u6cd5<\/strong>\uff1a\u5927\u5199\u5b57\u6bcd\u5f00\u5934\uff0c\u9a7c\u5cf0<\/li>\n<li><strong>\u53d8\u91cf<\/strong>\uff1a\u5c0f\u5199\u5b57\u6bcd\u5f00\u5934\uff0c\u4e0b\u5212\u7ebf<\/li>\n<\/ul>\n<blockquote>\n<p><strong>\u63d0\u793a<\/strong>\uff1a\u6df1\u5165\u7406\u89e3C++11\u6bd4\u73b0\u4ee3C++\u6559\u7a0b\u66f4\u8be6\u7ec6<\/p>\n<\/blockquote>\n<h3><span class=\"ez-toc-section\" id=\"12_%E7%BC%96%E7%A8%8B%E6%8C%87%E5%AF%BC\"><\/span>1.2 \u7f16\u7a0b\u6307\u5bfc<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<h4><span class=\"ez-toc-section\" id=\"%E5%B0%86%E6%96%87%E4%BB%B6%E9%97%B4%E7%9A%84%E7%BC%96%E8%AF%91%E4%BE%9D%E8%B5%96%E6%80%A7%E9%99%8D%E8%87%B3%E6%9C%80%E4%BD%8E\"><\/span>\u5c06\u6587\u4ef6\u95f4\u7684\u7f16\u8bd1\u4f9d\u8d56\u6027\u964d\u81f3\u6700\u4f4e<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<ol>\n<li>\u53ea\u8981\u6709\u53ef\u80fd\uff0c\u5c3d\u91cf\u8ba9\u5934\u6587\u4ef6\u4e0d\u8981\u4f9d\u8d56\u4e8e\u522b\u7684\u6587\u4ef6\uff1b\u5982\u679c\u4e0d\u53ef\u80fd\uff0c\u5c31\u501f\u52a9\u4e8e\u7c7b\u7684\u58f0\u660e\uff0c\u4e0d\u8981\u4f9d\u9760\u7c7b\u7684\u5b9a\u4e49<\/li>\n<li>\u5982\u679c\u53ef\u4ee5\u4f7f\u7528\u5bf9\u8c61\u7684\u5f15\u7528\u548c\u6307\u9488\uff0c\u5c31\u8981\u907f\u514d\u4f7f\u7528\u5bf9\u8c61\u672c\u8eab\u3002\u5b9a\u4e49\u67d0\u4e2a\u7c7b\u578b\u7684\u5f15\u7528\u548c\u6307\u9488\u53ea\u4f1a\u6d89\u53ca\u5230\u8fd9\u4e2a\u7c7b\u578b\u7684\u58f0\u660e\u3002\u5b9a\u4e49\u6b64\u7c7b\u578b\u7684\u5bf9\u8c61\u5219\u9700\u8981\u7c7b\u578b\u5b9a\u4e49\u7684\u53c2\u4e0e<\/li>\n<li>\u5c3d\u53ef\u80fd\u4f7f\u7528\u7c7b\u7684\u58f0\u660e\uff0c\u800c\u4e0d\u4f7f\u7528\u7c7b\u7684\u5b9a\u4e49\u3002\u56e0\u4e3a\u5728\u58f0\u660e\u4e00\u4e2a\u51fd\u6570\u65f6\uff0c\u5982\u679c\u7528\u5230\u67d0\u4e2a\u7c7b\uff0c\u662f\u7edd\u5bf9\u4e0d\u9700\u8981\u8fd9\u4e2a\u7c7b\u7684\u5b9a\u4e49\u7684\uff0c\u5373\u4f7f\u51fd\u6570\u662f\u901a\u8fc7\u4f20\u503c\u6765\u4f20\u9012\u548c\u8fd4\u56de\u8fd9\u4e2a\u7c7b<\/li>\n<li>\u4e0d\u8981\u5728\u5934\u6587\u4ef6\u4e2d\u518d\uff08\u901a\u8fc7<code>#include<\/code>\u6307\u4ee4\uff09\u5305\u542b\u5176\u5b83\u5934\u6587\u4ef6\uff0c\u9664\u975e\u7f3a\u5c11\u4e86\u5b83\u4eec\u5c31\u4e0d\u80fd\u7f16\u8bd1\u3002\u76f8\u53cd\uff0c\u8981\u4e00\u4e2a\u4e00\u4e2a\u5730\u58f0\u660e\u6240\u9700\u8981\u7684\u7c7b<\/li>\n<\/ol>\n<blockquote>\n<p><strong>\u6ce8\u610f<\/strong>\uff1a\u8fd9\u79cd\u65b9\u6cd5\u7684\u7f3a\u70b9\u662f\u5728\u8fd0\u884c\u65f6\u4f1a\u591a\u8017\u70b9\u65f6\u95f4\uff0c\u4e5f\u4f1a\u591a\u8017\u70b9\u5185\u5b58\uff0c\u4e0d\u4f1a\u4f7f\u7528\u5185\u8054\u51fd\u6570\uff0c\u56e0\u4e3a\u4f7f\u7528\u4efb\u4f55\u5185\u8054\u51fd\u6570\u65f6\u90fd\u8981\u8bbf\u95ee\u5b9e\u73b0\u7ec6\u8282<\/p>\n<\/blockquote>\n<h2><span class=\"ez-toc-section\" id=\"%E7%AC%AC_2_%E7%AB%A0_%E7%B1%BB\"><\/span>\u7b2c 2 \u7ae0 \u7c7b<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"21_C_%E5%AF%B9%E8%B1%A1%E7%9A%84%E5%86%85%E5%AD%98%E5%B8%83%E5%B1%80\"><\/span>2.1 C++ \u5bf9\u8c61\u7684\u5185\u5b58\u5e03\u5c40<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<h4><span class=\"ez-toc-section\" id=\"211_%E5%A4%A7%E5%B0%8F%E5%92%8C%E5%B8%83%E5%B1%80\"><\/span>2.1.1 \u5927\u5c0f\u548c\u5e03\u5c40<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u7c7b\u5927\u5c0f\u7531\u7c7b\u7684\u6210\u5458\u53d8\u91cf\u548c\u865a\u51fd\u6570\u8868\u6307\u9488\u7ec4\u6210\uff0c\u5bf9\u8c61\u5927\u5c0f\u548c\u7c7b\u5927\u5c0f\u4e00\u6837\u3002<\/p>\n<p><strong>\u51fd\u6570\u90e8\u5206\uff1a<\/strong><br \/>\n&#8211; \u4e0d\u7ba1\u6210\u5458\u51fd\u6570\u3001\u865a\u51fd\u6570\uff0c\u8fd8\u662f\u7c7b\u6210\u5458\u51fd\u6570\uff0c\u90fd\u662f\u5b58\u653e\u5728\u4ee3\u7801\u533a<br \/>\n&#8211; \u6210\u5458\u51fd\u6570\u548c\u7c7b\u6210\u5458\u51fd\u6570\u7684\u533a\u522b\u662f\u6210\u5458\u51fd\u6570\u6bd4\u7c7b\u6210\u5458\u51fd\u6570\u591a\u4e00\u4e2a\u9690\u542b\u7684<code>this<\/code>\u6307\u9488<br \/>\n&#8211; \u7f16\u8bd1\u5668\u4e3a\u4e86\u652f\u6301\u865a\u51fd\u6570\uff0c\u5728\u6570\u636e\u90e8\u5206\u65b0\u589e\u4e86\u4e00\u4e2a\u865a\u51fd\u6570\u8868<\/p>\n<p><strong>\u6570\u636e\u90e8\u5206\uff1a<\/strong><br \/>\n&#8211; \u7c7b\u6210\u5458\u53d8\u91cf<br \/>\n&#8211; \u865a\u51fd\u6570\u8868\u6307\u9488<br \/>\n&#8211; \u4e0d\u5305\u62ec\u7c7b\u9759\u6001\u6210\u5458\u53d8\u91cf\uff0c\u4f4d\u4e8e\u5168\u5c40\u6570\u636e\u533a<br \/>\n&#8211; \u603b\u5927\u5c0f\u9700\u8981\u6ee1\u8db3\u5185\u5b58\u5bf9\u9f50\u8981\u6c42<br \/>\n&#8211; \u865a\u51fd\u6570\u8868\u6307\u9488\u56fa\u5b9a\u4e3a8\u4e2a\u5b57\u8282<br \/>\n&#8211; \u7a7a\u7c7b\u5927\u5c0f\u4e3a1<\/p>\n<p><strong>\u865a\u51fd\u6570\u8868\uff1a<\/strong><br \/>\n&#8211; \u865a\u51fd\u6570\u8868\u8ddf\u968f\u7c7b\uff0c\u6bcf\u4e2a\u7c7b\u521d\u59cb\u5316\u7684\u65f6\u5019\u786e\u5b9a\uff0c\u6240\u6709\u5bf9\u8c61\u5171\u4eab\u4e00\u4e2a\u865a\u51fd\u6570\u8868<br \/>\n&#8211; \u865a\u51fd\u6570\u8868\u5b58\u5728\u5168\u5c40\u6570\u636e\u533a<\/p>\n<p><strong>\u793a\u4f8b\uff1a<\/strong><\/p>\n<pre><code class=\"language-cpp\">class EmptyClass {}; \/\/ \u5927\u5c0f\u56fa\u5b9a\u4e3a1\n\nclass People {\nprivate:\n    int age = 10; \/\/ 4 bytes\n}; \/\/ \u5927\u5c0f\u4e3a4\n\nclass People {\npublic:\n    virtual ~People() = default;\nprivate:\n    int age = 10; \/\/ 4 bytes\n}; \n\/\/ \u5927\u5c0f\u4e3a 4 + 8 = 12 bytes, \u7531\u4e8e\u5bf9\u9f50\u8981\u6c42\uff0c\u5b9e\u9645\u5927\u5c0f\u4e3a16 bytes\n\nclass People {\npublic:\n    virtual ~People() = default;\nprivate:\n    int age = 10; \/\/ 4 bytes\n    static int nums;\n}; \n\/\/ \u5927\u5c0f\u4f9d\u7136\u4e3a16\u4e2a\u5b57\u8282\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"22_%E5%8D%95%E9%87%8D%E7%BB%A7%E6%89%BF\"><\/span>2.2 \u5355\u91cd\u7ee7\u627f<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>\u5185\u5b58\u5e03\u5c40\uff1a<\/strong><br \/>\n&#8211; \u865a\u51fd\u6570\u6307\u9488<br \/>\n&#8211; \u7236\u7c7b\u865a\u51fd\u6570<br \/>\n&#8211; \u5b50\u7c7b\u865a\u51fd\u6570<br \/>\n&#8211; \u7236\u7c7b\u6210\u5458\u53d8\u91cf<br \/>\n&#8211; \u5b50\u7c7b\u6210\u5458\u53d8\u91cf<\/p>\n<p><strong>\u6784\u9020\u51fd\u6570\u548c\u6790\u6784\u51fd\u6570\u7684\u8c03\u7528\u987a\u5e8f\uff1a<\/strong><br \/>\n1. \u7236\u7c7b\u6784\u9020<br \/>\n2. \u5b50\u7c7b\u6784\u9020<br \/>\n3. \u5b50\u7c7b\u6790\u6784<br \/>\n4. \u7236\u7c7b\u6790\u6784<\/p>\n<p><img decoding=\"async\" alt=\"\u5355\u91cd\u7ee7\u627f\u5185\u5b58\u5e03\u5c40\" src=\"https:\/\/www.ixriver.com\/wp-content\/uploads\/2026\/01\/image_1.png\" \/><\/p>\n<p><strong>\u4ee3\u7801\u793a\u4f8b\uff1a<\/strong><\/p>\n<pre><code class=\"language-cpp\">#include &lt;iostream&gt;\nusing namespace std;\n\nclass Parent {\npublic:\n    int64_t iparent;\n    Parent() : iparent(10) { \n        cout &lt;&lt; __func__ &lt;&lt; endl; \n    }\n    ~Parent() { \n        cout &lt;&lt; __func__ &lt;&lt; endl; \n    }\n    virtual void f() { \n        cout &lt;&lt; &quot;Parent::f()&quot; &lt;&lt; endl; \n    }\n    virtual void g() { \n        cout &lt;&lt; &quot;Parent::g()&quot; &lt;&lt; endl; \n    }\n    virtual void h() { \n        cout &lt;&lt; &quot;Parent::h()&quot; &lt;&lt; endl; \n    }\n};\n\nclass Child : public Parent {\npublic:\n    int64_t ichild;\n    Child() : ichild(100) { \n        cout &lt;&lt; __func__ &lt;&lt; endl; \n    }\n    ~Child() { \n        cout &lt;&lt; __func__ &lt;&lt; endl; \n    }\n    virtual void f() { \n        cout &lt;&lt; &quot;Child::f()&quot; &lt;&lt; endl; \n    }\n    virtual void g_child() { \n        cout &lt;&lt; &quot;Child::g_child()&quot; &lt;&lt; endl; \n    }\n    virtual void h_child() { \n        cout &lt;&lt; &quot;Child::h_child()&quot; &lt;&lt; endl; \n    }\n};\n\nclass GrandChild : public Child {\npublic:\n    int64_t igrandchild;\n    GrandChild() : igrandchild(1000) { \n        cout &lt;&lt; __func__ &lt;&lt; endl; \n    }\n    ~GrandChild() { \n        cout &lt;&lt; __func__ &lt;&lt; endl; \n    }\n    virtual void f() { \n        cout &lt;&lt; &quot;GrandChild::f()&quot; &lt;&lt; endl; \n    }\n    virtual void g_child() { \n        cout &lt;&lt; &quot;GrandChild::g_child()&quot; &lt;&lt; endl; \n    }\n    virtual void h_grandchild() { \n        cout &lt;&lt; &quot;GrandChild::h_grandchild()&quot; &lt;&lt; endl; \n    }\n};\n\nvoid ShowSingleInherit() {\n    GrandChild* obj = new GrandChild();\n    auto sz = sizeof(GrandChild);\n    auto count = sz \/ sizeof(int64_t*);\n    printf(&quot;show single inherit size %d count %d............\\n&quot;, (int)sz, (int)count);\n    int64_t* p = (int64_t*)obj;\n    for (int i = 0; i &lt; count; ++i) {\n        printf(&quot;index %d %p %lld\\n&quot;, i, p, *p);\n        if (i == 0) {\n            ShowVTable(obj, 6);\n        }\n        ++p;\n    }\n    delete obj;\n}\n<\/code><\/pre>\n<p><strong>\u8fd0\u884c\u7ed3\u679c\uff1a<\/strong><\/p>\n<pre><code>Parent\nChild\nGrandChild\nshow single inherit size 32 count 4............\nindex 0 0x7f9ea8f05cc0 4563129104\n         virtual func: 0x10ffb81f0 GrandChild::f()\n         virtual func: 0x10ffb8230  Parent::g()\n         virtual func: 0x10ffb8270  Parent::h()\n         virtual func: 0x10ffb82b0 GrandChild::g_child()\n         virtual func: 0x10ffb82f0 Child::h_child()\n         virtual func: 0x10ffb8330 GrandChild::h_grandchild()\nindex 1 0x7f9ea8f05cc8 10\nindex 2 0x7f9ea8f05cd0 100\nindex 3 0x7f9ea8f05cd8 1000\n~GrandChild\n~Child\n~Parent\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"23_%E5%A4%9A%E9%87%8D%E7%BB%A7%E6%89%BF\"><\/span>2.3 \u591a\u91cd\u7ee7\u627f<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>\u5185\u5b58\u5e03\u5c40\uff1a<\/strong><br \/>\n&#8211; \u7b2c\u4e00\u4e2a\u7236\u7c7b\u865a\u51fd\u6570\u6307\u9488<br \/>\n  &#8211; \u5b50\u7c7b\u590d\u5199\u7684\u865a\u51fd\u6570\u4f1a\u66ff\u6362\u7236\u7c7b\u865a\u51fd\u6570\u8868\u5bf9\u5e94\u7684\u51fd\u6570<br \/>\n  &#8211; \u5b50\u7c7b\u865a\u51fd\u6570\u653e\u5728\u7b2c\u4e00\u4e2a\u7236\u7c7b\u865a\u51fd\u6570\u8868\u7684\u6700\u540e\u9762<br \/>\n&#8211; \u7b2c\u4e00\u4e2a\u7236\u7c7b\u6210\u5458\u53d8\u91cf<br \/>\n&#8211; &#8230;&#8230;<br \/>\n&#8211; \u7b2cN\u4e2a\u7236\u7c7b\u865a\u51fd\u6570\u6307\u9488<br \/>\n  &#8211; \u5b50\u7c7b\u590d\u5199\u7684\u865a\u51fd\u6570\u4f1a\u66ff\u6362\u7236\u7c7b\u865a\u51fd\u6570\u8868\u5bf9\u5e94\u7684\u51fd\u6570<br \/>\n&#8211; \u7b2cN\u4e2a\u7236\u7c7b\u6210\u5458\u53d8\u91cf<br \/>\n&#8211; \u5b50\u7c7b\u6210\u5458\u53d8\u91cf<br \/>\n<strong>\u6784\u9020\u51fd\u6570\u548c\u6790\u6784\u51fd\u6570\u987a\u5e8f\uff1a<\/strong><br \/>\n1. \u7b2c\u4e00\u4e2a\u7236\u7c7b\u6784\u9020\u51fd\u6570<br \/>\n2. \u7b2c\u4e8c\u4e2a\u7236\u7c7b\u6784\u9020\u51fd\u6570<br \/>\n3. \u7b2cN\u4e2a\u7236\u7c7b\u6784\u9020\u51fd\u6570<br \/>\n4. \u5b50\u7c7b\u6784\u9020\u51fd\u6570<br \/>\n5. \u5b50\u7c7b\u6790\u6784\u51fd\u6570<br \/>\n6. \u7b2cN\u4e2a\u7236\u7c7b\u6790\u6784\u51fd\u6570<br \/>\n7. \u7b2c\u4e8c\u4e2a\u7236\u7c7b\u6790\u6784\u51fd\u6570<br \/>\n8. \u7b2c\u4e00\u4e2a\u7236\u7c7b\u6790\u6784\u51fd\u6570<\/p>\n<p><img decoding=\"async\" alt=\"\u591a\u91cd\u7ee7\u627f\u5185\u5b58\u5e03\u5c40\" src=\"https:\/\/www.ixriver.com\/wp-content\/uploads\/2026\/01\/image_2.png\" \/><\/p>\n<p><strong>\u4ee3\u7801\u793a\u4f8b\uff1a<\/strong><\/p>\n<pre><code class=\"language-cpp\">#include &lt;iostream&gt;\nusing namespace std;\n\nclass Base1 {\npublic:\n    int64_t ibase1;\n    Base1() : ibase1(10) { \n        cout &lt;&lt; __func__ &lt;&lt; endl; \n    }\n    ~Base1() { \n        cout &lt;&lt; __func__ &lt;&lt; endl; \n    }\n    virtual void f() { \n        cout &lt;&lt; &quot;Base1::f()&quot; &lt;&lt; endl; \n    }\n    virtual void g() { \n        cout &lt;&lt; &quot;Base1::g()&quot; &lt;&lt; endl; \n    }\n    virtual void h() { \n        cout &lt;&lt; &quot;Base1::h()&quot; &lt;&lt; endl; \n    }\n};\n\nclass Base2 {\npublic:\n    int64_t ibase2;\n    Base2() : ibase2(20) {\n        cout &lt;&lt; __func__ &lt;&lt; endl; \n    }\n    ~Base2() {\n        cout &lt;&lt; __func__ &lt;&lt; endl; \n    }\n    virtual void f() { \n        cout &lt;&lt; &quot;Base2::f()&quot; &lt;&lt; endl; \n    }\n    virtual void g() { \n        cout &lt;&lt; &quot;Base2::g()&quot; &lt;&lt; endl; \n    }\n    virtual void h() { \n        cout &lt;&lt; &quot;Base2::h()&quot; &lt;&lt; endl; \n    }\n};\n\nclass Base3 {\npublic:\n    int64_t ibase3;\n    Base3() : ibase3(30) {\n        cout &lt;&lt; __func__ &lt;&lt; endl; \n    }\n    ~Base3() {\n        cout &lt;&lt; __func__ &lt;&lt; endl; \n    }\n    virtual void f() { \n        cout &lt;&lt; &quot;Base3::f()&quot; &lt;&lt; endl; \n    }\n    virtual void g() { \n        cout &lt;&lt; &quot;Base3::g()&quot; &lt;&lt; endl; \n    }\n    virtual void h() { \n        cout &lt;&lt; &quot;Base3::h()&quot; &lt;&lt; endl; \n    }\n};\n\nclass Derive : public Base1, public Base2, public Base3 {\npublic:\n    int64_t iderive;\n    Derive() : iderive(100) {\n        cout &lt;&lt; __func__ &lt;&lt; endl; \n    }\n    ~Derive() { \n        cout &lt;&lt; __func__ &lt;&lt; endl; \n    }\n    virtual void f() { \n        cout &lt;&lt; &quot;Derive::f()&quot; &lt;&lt; endl; \n    }\n    virtual void g1() { \n        cout &lt;&lt; &quot;Derive::g1()&quot; &lt;&lt; endl; \n    }\n};\n\nvoid ShowMultiInherit() {\n    Derive* obj = new Derive();\n    int64_t* p = (int64_t*)obj;\n    auto sz = sizeof(Derive);\n    auto count = sz \/ sizeof(int64_t*);\n    printf(&quot;show multi inherit size %d count %d...........\\n&quot;, (int)sz, (int)count);\n    for (int i = 0; i &lt; count; ++i) {\n        printf(&quot;index %d %p %lld\\n&quot;, i, p, *p);\n        if (i == 0) {\n            ShowVTable(p, 4);\n        }\n        if (i == 2 || i == 4) {\n            ShowVTable(p, 3);\n        }\n        ++p;\n    }\n    delete obj;\n}\n<\/code><\/pre>\n<p><strong>\u8fd0\u884c\u7ed3\u679c\uff1a<\/strong><\/p>\n<pre><code>Base1\nBase2\nBase3\nDerive\nshow multi inherit size 56 count 7...........\nindex 0 0x7fc859f05cc0 4534506480\n         virtual func: 0x10e46c860 Derive::f()\n         virtual func: 0x10e46c8a0 Base1::g()\n         virtual func: 0x10e46c8e0 Base1::h()\n         virtual func: 0x10e46c920 Derive::g1()\nindex 1 0x7fc859f05cc8 10\nindex 2 0x7fc859f05cd0 4534506528\n         virtual func: 0x10e46c960 Derive::f()\n         virtual func: 0x10e46c980 Base2::g()\n         virtual func: 0x10e46c9c0 Base2::h()\nindex 3 0x7fc859f05cd8 20\nindex 4 0x7fc859f05ce0 4534506568\n         virtual func: 0x10e46ca00 Derive::f()\n         virtual func: 0x10e46ca20 Base3::g()\n         virtual func: 0x10e46ca60 Base3::h()\nindex 5 0x7fc859f05ce8 30\nindex 6 0x7fc859f05cf0 100\n~Derive\n~Base3\n~Base2\n~Base1\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"24_%E9%87%8D%E5%A4%8D%E7%BB%A7%E6%89%BF\"><\/span>2.4 \u91cd\u590d\u7ee7\u627f<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u91cd\u590d\u7ee7\u627f\u548c\u591a\u91cd\u7ee7\u627f\u7684\u5e03\u5c40\u5b8c\u5168\u4e00\u6837\uff0c\u53ea\u662f\u76f8\u540c\u7684\u57fa\u7c7b\u4f1a\u5b58\u5728\u4e24\u4efd\u6210\u5458\u53d8\u91cf\u7684\u62f7\u8d1d\u3002<\/p>\n<p><strong>\u5185\u5b58\u5e03\u5c40\uff1a<\/strong><br \/>\n&#8211; \u7b2c\u4e00\u4e2a\u7236\u7c7b\u865a\u51fd\u6570\u6307\u9488<br \/>\n  &#8211; \u5b50\u7c7b\u590d\u5199\u7684\u865a\u51fd\u6570\u4f1a\u66ff\u6362\u7236\u7c7b\u865a\u51fd\u6570\u8868\u5bf9\u5e94\u7684\u51fd\u6570<br \/>\n  &#8211; \u5b50\u7c7b\u865a\u51fd\u6570\u653e\u5728\u7b2c\u4e00\u4e2a\u7236\u7c7b\u865a\u51fd\u6570\u8868\u7684\u6700\u540e\u9762<br \/>\n&#8211; \u7b2c\u4e00\u4e2a\u7236\u7c7b\u6210\u5458\u53d8\u91cf<br \/>\n&#8211; &#8230;&#8230;<br \/>\n&#8211; \u7b2cN\u4e2a\u7236\u7c7b\u865a\u51fd\u6570\u6307\u9488<br \/>\n  &#8211; \u5b50\u7c7b\u590d\u5199\u7684\u865a\u51fd\u6570\u4f1a\u66ff\u6362\u7236\u7c7b\u865a\u51fd\u6570\u8868\u5bf9\u5e94\u7684\u51fd\u6570<br \/>\n&#8211; \u7b2cN\u4e2a\u7236\u7c7b\u6210\u5458\u53d8\u91cf<br \/>\n&#8211; \u5b50\u7c7b\u6210\u5458\u53d8\u91cf<br \/>\n<strong>\u6784\u9020\u51fd\u6570\u548c\u6790\u6784\u51fd\u6570\u987a\u5e8f\uff1a<\/strong><br \/>\n1. \u7b2c\u4e00\u4e2a\u7956\u5148\u6784\u9020\u51fd\u6570<br \/>\n2. \u7b2c\u4e00\u4e2a\u7236\u7c7b\u6784\u9020\u51fd\u6570<br \/>\n3. \u7b2c\u4e8c\u4e2a\u7956\u5148\u6784\u9020\u51fd\u6570<br \/>\n4. \u7b2c\u4e8c\u4e2a\u7236\u7c7b\u6784\u9020\u51fd\u6570<br \/>\n5. \u5b50\u7c7b\u6784\u9020\u51fd\u6570<br \/>\n6. \u5b50\u7c7b\u6790\u6784\u51fd\u6570<br \/>\n7. \u7b2c\u4e8c\u4e2a\u7236\u7c7b\u6790\u6784\u51fd\u6570<br \/>\n8. \u7b2c\u4e8c\u4e2a\u7956\u5148\u6790\u6784\u51fd\u6570<br \/>\n9. \u7b2c\u4e00\u4e2a\u7236\u7c7b\u6790\u6784\u51fd\u6570<br \/>\n10. \u7b2c\u4e00\u4e2a\u7956\u5148\u6790\u6784\u51fd\u6570<\/p>\n<p><img decoding=\"async\" alt=\"\u91cd\u590d\u7ee7\u627f\u5185\u5b58\u5e03\u5c401\" src=\"https:\/\/www.ixriver.com\/wp-content\/uploads\/2026\/01\/image_3.png\" \/><\/p>\n<p><img decoding=\"async\" alt=\"\u91cd\u590d\u7ee7\u627f\u5185\u5b58\u5e03\u5c402\" src=\"https:\/\/www.ixriver.com\/wp-content\/uploads\/2026\/01\/image_4.png\" \/><\/p>\n<p><strong>\u4ee3\u7801\u793a\u4f8b\uff1a<\/strong><\/p>\n<pre><code class=\"language-cpp\">#include &lt;stdio.h&gt;\nint g_count = 10;\n\nclass parent {\npublic:\n    parent() : a(g_count++) { \n        cout &lt;&lt; __func__ &lt;&lt; endl; \n    }\n    ~parent() { \n        cout &lt;&lt; __func__ &lt;&lt; endl; \n    }\n    virtual void f() { \n        printf(&quot;parent f\\n&quot;); \n    }\n    virtual void g() { \n        printf(&quot;parent g\\n&quot;); \n    }\nprivate:\n    int64_t a = 10;\n};\n\nclass parent1 : public parent {\npublic:\n    parent1() { \n        cout &lt;&lt; __func__ &lt;&lt; endl; \n    }\n    ~parent1() {\n        cout &lt;&lt; __func__ &lt;&lt; endl; \n    }\n    virtual void f() { \n        printf(&quot;parent1 f\\n&quot;); \n    }\n    virtual void g1() { \n        printf(&quot;parent1 g1\\n&quot;); \n    }\nprivate:\n    int64_t a = 101;\n};\n\nclass parent2 : public parent {\npublic:\n    parent2() { \n        cout &lt;&lt; __func__ &lt;&lt; endl; \n    }\n    ~parent2() { \n        cout &lt;&lt; __func__ &lt;&lt; endl; \n    }\n    virtual void f() { \n        printf(&quot;parent2 f\\n&quot;); \n    }\n    virtual void g2() { \n        printf(&quot;parent2 g2\\n&quot;); \n    }\nprivate:\n    int64_t a = 102;\n};\n\nclass son : public parent1, public parent2 {\npublic:\n    son() { \n        cout &lt;&lt; __func__ &lt;&lt; endl; \n    }\n    ~son() { \n        cout &lt;&lt; __func__ &lt;&lt; endl; \n    }\n    virtual void f() { \n        printf(&quot;son f\\n&quot;); \n    }\n    virtual void gs() { \n        printf(&quot;son g\\n&quot;); \n    }\nprivate:\n    int64_t a = 1000;\n};\n\nvoid ShowRepeatInherit() {\n    son* obj = new son;\n    int64_t* p = (int64_t*)obj;\n    auto sz = sizeof(son);\n    auto count = sz \/ sizeof(int64_t*);\n    printf(&quot;show repeat inherit size %d count %d.......\\n&quot;, (int)sz, (int)count);\n    for (int i = 0; i &lt; 7; ++i) {\n        printf(&quot;index %d %p %lld\\n&quot;, i, p, *p);\n        if (i == 0) {\n            ShowVTable(p, 4);\n        }\n        if (i == 3) {\n            ShowVTable(p, 3);\n        }\n        ++p;\n    }\n    delete obj;\n}\n<\/code><\/pre>\n<p><strong>\u8fd0\u884c\u7ed3\u679c\uff1a<\/strong><\/p>\n<pre><code>parent\nparent1\nparent\nparent2\nson\nshow repeat inherit size 56 count 7.......\nindex 0 0x7ff253f05cc0 4384023904\n         virtual func: 0x1054e9ed0 son f\n         virtual func: 0x1054e9ef0 parent g\n         virtual func: 0x1054e9f10 parent1 g1\n         virtual func: 0x1054e9f30 son g\nindex 1 0x7ff253f05cc8 10\nindex 2 0x7ff253f05cd0 101\nindex 3 0x7ff253f05cd8 4384023952\n         virtual func: 0x1054e9f50 son f\n         virtual func: 0x1054e9ef0 parent g\n         virtual func: 0x1054e9f70 parent2 g2\nindex 4 0x7ff253f05ce0 11\nindex 5 0x7ff253f05ce8 102\nindex 6 0x7ff253f05cf0 1000\n~son\n~parent2\n~parent\n~parent1\n~parent\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"25_%E8%99%9A%E7%BB%A7%E6%89%BF\"><\/span>2.5 \u865a\u7ee7\u627f<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><img decoding=\"async\" alt=\"\u865a\u7ee7\u627f\u5185\u5b58\u5e03\u5c40\" src=\"https:\/\/www.ixriver.com\/wp-content\/uploads\/2026\/01\/image_5.png\" \/><\/p>\n<p>\u865a\u7ee7\u627f\u6bd4\u91cd\u590d\u7ee7\u627f\u4f1a\u5c11\u6210\u5458\u53d8\u91cf\uff0c\u4f46\u662f\u4f1a\u591a\u4e00\u4e2a\u5b50\u7c7b\u865a\u51fd\u6570\u6307\u9488\uff0c\u548cN\u4e2a\u7956\u5148\u7c7b\u865a\u51fd\u6570\u6307\u9488\u3002\u865a\u7ee7\u627f\u4f1a\u6bd4\u91cd\u590d\u7ee7\u627f\u66f4\u8282\u7701\u7a7a\u95f4\u3002<\/p>\n<p><strong>\u5185\u5b58\u5e03\u5c40\uff1a<\/strong> \u7956\u5148\u7c7b\u865a\u51fd\u6570\u6307\u9488\u548c\u6210\u5458\u53d8\u91cf\u53ea\u6709\u4e00\u4efd\uff0c\u800c\u4e14\u51fa\u73b0\u5728\u9996\u4e2a\u7ee7\u627f\u7c7b\u540e\u9762\u3002<br \/>\n&#8211; \u5b50\u7c7b\u865a\u51fd\u6570\u6307\u9488<br \/>\n&#8211; \u5b50\u7c7b\u6210\u5458\u53d8\u91cf<br \/>\n&#8211; \u7236\u7c7b\u865a\u51fd\u6570\u6307\u9488<br \/>\n&#8211; \u7236\u7c7b\u6210\u5458\u53d8\u91cf<br \/>\n&#8211; \u7956\u5148\u7c7b\u865a\u51fd\u6570\u6307\u9488<br \/>\n&#8211; \u7956\u5148\u7c7b\u6210\u5458\u53d8\u91cf<br \/>\n&#8211; \u7b2cN\u4e2a\u7236\u7c7b\u865a\u51fd\u6570\u6307\u9488<br \/>\n&#8211; \u7b2cN\u4e2a\u7236\u7c7b\u6210\u5458\u53d8\u91cf<\/p>\n<p><strong>\u6784\u9020\u51fd\u6570\u548c\u6790\u6784\u51fd\u6570\u987a\u5e8f\uff1a<\/strong><br \/>\n1. \u7956\u5148\u6784\u9020\u51fd\u6570<br \/>\n2. \u7b2c\u4e00\u4e2a\u7236\u7c7b\u6784\u9020\u51fd\u6570<br \/>\n3. \u7b2c\u4e8c\u4e2a\u7236\u7c7b\u6784\u9020\u51fd\u6570<br \/>\n4. \u5b50\u7c7b\u6784\u9020\u51fd\u6570<br \/>\n5. \u5b50\u7c7b\u6790\u6784\u51fd\u6570<br \/>\n6. \u7b2c\u4e8c\u4e2a\u7236\u7c7b\u6790\u6784\u51fd\u6570<br \/>\n7. \u7b2c\u4e00\u4e2a\u7236\u7c7b\u6790\u6784\u51fd\u6570<br \/>\n8. \u7956\u5148\u6790\u6784\u51fd\u6570<\/p>\n<p><strong>\u4ee3\u7801\u793a\u4f8b\uff1a<\/strong><\/p>\n<pre><code class=\"language-cpp\">#include &lt;stdio.h&gt;\nnamespace ClassDemo {\nclass parent {\npublic:\n    virtual void f() { \n        printf(&quot;parent f\\n&quot;); \n    }\n    virtual void g() { \n        printf(&quot;parent g\\n&quot;); \n    }\nprivate:\n    int64_t a = 10;\n};\n\nclass parent1 : virtual public parent {\npublic:\n    virtual void f() { \n        printf(&quot;parent1 f\\n&quot;); \n    }\n    virtual void g1() { \n        printf(&quot;parent1 g1\\n&quot;); \n    }\nprivate:\n    int64_t a = 101;\n};\n\nclass parent2 : virtual public parent {\npublic:\n    virtual void f() { \n        printf(&quot;parent2 f\\n&quot;); \n    }\n    virtual void g2() { \n        printf(&quot;parent2 g2\\n&quot;); \n    }\nprivate:\n    int64_t a = 102;\n};\n\nclass son : virtual public parent1, virtual public parent2 {\npublic:\n    virtual void f() { \n        printf(&quot;son f\\n&quot;); \n    }\n    virtual void gs() { \n        printf(&quot;son g\\n&quot;); \n    }\nprivate:\n    int64_t a = 1000;\n};\n\nvoid ShowVirtualInherit() {\n    son* obj = new son;\n    printf(&quot;show virtual inherit.......\\n&quot;);\n    int64_t* p = (int64_t*)obj;\n    for (int i = 0; i &lt; 9; ++i) {\n        printf(&quot;index %d %p %lld\\n&quot;, i, p, *p);\n        if (i == 0) {\n            ShowVTable(p, 4);\n        }\n        ++p;\n    }\n}\n}\n<\/code><\/pre>\n<p><strong>\u8fd0\u884c\u7ed3\u679c\uff1a<\/strong><\/p>\n<pre><code>parent\nparent1\nparent2\nson\nshow virtual inherit size 64 count 8.......\nindex 0 0x7ff612705cc0 4390753976\n         virtual func: 0x105b55480 son f\n         virtual func: 0x105b554a0 son g\nindex 1 0x7ff612705cc8 1000\nindex 2 0x7ff612705cd0 4390754032\nindex 3 0x7ff612705cd8 101\nindex 4 0x7ff612705ce0 4390754080\nindex 5 0x7ff612705ce8 10\nindex 6 0x7ff612705cf0 4390754136\nindex 7 0x7ff612705cf8 102\n~son\n~parent2\n~parent1\n~parent\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"26_%E9%BB%98%E8%AE%A4%E5%87%BD%E6%95%B0%E6%8E%A7%E5%88%B6%EF%BC%88%E7%BC%96%E8%AF%91%E5%99%A8%E7%94%9F%E6%88%90%E5%87%BD%E6%95%B0%E8%A7%84%E5%88%99%EF%BC%89\"><\/span>2.6 \u9ed8\u8ba4\u51fd\u6570\u63a7\u5236\uff08\u7f16\u8bd1\u5668\u751f\u6210\u51fd\u6570\u89c4\u5219\uff09<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>C++\u58f0\u660e\u81ea\u5b9a\u4e49\u7684\u7c7b\uff0c\u7f16\u8bd1\u5668\u9ed8\u8ba4\u4f1a\u751f\u6210\u672a\u81ea\u5b9a\u4e49\u7684\u6210\u5458\u51fd\u6570\uff0c\u8fd9\u4e9b\u51fd\u6570\u5305\u62ec\u6784\u9020\u51fd\u6570\u3001\u62f7\u8d1d\u6784\u9020\u3001\u62f7\u8d1d\u8d4b\u503c\u3001\u79fb\u52a8\u6784\u9020\u3001\u79fb\u52a8\u8d4b\u503c\u3001\u6790\u6784\u51fd\u6570\u3002<\/p>\n<h4><span class=\"ez-toc-section\" id=\"261_%E7%94%9F%E6%88%90%E8%A7%84%E5%88%99%EF%BC%88%E9%BB%98%E8%AE%A4%E7%94%9F%E6%88%90%E4%BD%8E%E4%BC%98%E5%85%88%E7%BA%A7%E5%87%BD%E6%95%B0%EF%BC%89\"><\/span>2.6.1 \u751f\u6210\u89c4\u5219\uff08\u9ed8\u8ba4\u751f\u6210\u4f4e\u4f18\u5148\u7ea7\u51fd\u6570\uff09<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p><strong>\u4f18\u5148\u7ea7\uff1a<\/strong> \u6784\u9020\u51fd\u6570 &gt; \u62f7\u8d1d &gt; \u79fb\u52a8<\/p>\n<p><strong>\u89c4\u5219\u8bf4\u660e\uff1a<\/strong><br \/>\n&#8211; \u5b9a\u4e49\u4e86\u9ad8\u4f18\u5148\u7ea7\u7684\u51fd\u6570\uff0c\u7f16\u8bd1\u5668\u9ed8\u8ba4\u4f1a\u751f\u6210\u4f4e\u4f18\u5148\u7ea7\u7684\uff0c\u4f46\u662f\u5b9a\u4e49\u4e86\u4f4e\u4f18\u5148\u7ea7\u7684\u51fd\u6570\uff0c\u7f16\u8bd1\u5668\u4e0d\u4f1a\u751f\u6210\u9ad8\u4f18\u5148\u7ea7\u51fd\u6570<br \/>\n&#8211; \u5b9a\u4e49\u4e86\u79fb\u52a8\u6784\u9020\u6216\u8005\u62f7\u8d1d\u6784\u9020\uff0c\u4e0d\u4f1a\u751f\u6210\u9ed8\u8ba4\u7684\u6784\u9020\u51fd\u6570<br \/>\n&#8211; \u5b9a\u4e49\u4e86\u62f7\u8d1d\u51fd\u6570\uff0c\u7f16\u8bd1\u5668\u4f1a\u751f\u6210\u79fb\u52a8\u51fd\u6570<br \/>\n&#8211; \u5b9a\u4e49\u4e86\u79fb\u52a8\u51fd\u6570\uff0c\u7f16\u8bd1\u5668\u4e0d\u4f1a\u81ea\u52a8\u751f\u6210\u62f7\u8d1d\u51fd\u6570<\/p>\n<p><strong>\u672f\u8bed\u5b9a\u4e49\uff1a<\/strong><br \/>\n&#8211; <code>define<\/code>: \u7528\u6237\u5b9a\u4e49<br \/>\n&#8211; <code>default<\/code>: \u7f16\u8bd1\u5668\u751f\u6210<br \/>\n&#8211; <code>undefine<\/code>: \u51fd\u6570\u6ca1\u6709\u5b9a\u4e49<br \/>\n&#8211; <code>define_must<\/code>: \u521d\u59cb\u72b6\u6001\u662fundefine\uff0c\u7528\u6237\u5fc5\u987b\u5b9a\u4e49\u624d\u53ef\u4ee5\u4f7f\u7528<\/p>\n<table>\n<thead>\n<tr>\n<th><\/th>\n<th>construct 1<\/th>\n<th>copy construct 2<\/th>\n<th>move construct 3<\/th>\n<th>copy  assign 4<\/th>\n<th>move  assin 5<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\u5206\u7ec41<\/td>\n<td>define(1)<\/td>\n<td>default<\/td>\n<td>default<\/td>\n<td>default<\/td>\n<td>default<\/td>\n<\/tr>\n<tr>\n<td>\u5206\u7ec42<\/td>\n<td>define_must<\/td>\n<td>define(1)<\/td>\n<td>default<\/td>\n<td>default<\/td>\n<td>default<\/td>\n<\/tr>\n<tr>\n<td>\u5206\u7ec43<\/td>\n<td>define_must<\/td>\n<td>undefine<\/td>\n<td>define(1)<\/td>\n<td>undefine<\/td>\n<td>undefine<\/td>\n<\/tr>\n<tr>\n<td>\u5206\u7ec44<\/td>\n<td>default<\/td>\n<td>default<\/td>\n<td>default<\/td>\n<td>define(1)<\/td>\n<td>default<\/td>\n<\/tr>\n<tr>\n<td>\u5206\u7ec45<\/td>\n<td>default<\/td>\n<td>undefine<\/td>\n<td>undefine<\/td>\n<td>undefine<\/td>\n<td>define(1)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<ul>\n<li>\u5b9a\u4e49\u4e86\u6784\u9020\u51fd\u6570\uff081\uff09\uff0c[2,3,4,5] \u6709\u9ed8\u8ba4\u51fd\u6570<br \/>\n\u62f7\u8d1d\u6784\u9020\u548c\u62f7\u8d1d\u8d4b\u503c\uff1a<\/li>\n<li>\u5b9a\u4e49\u4e86\u62f7\u8d1d\u6784\u9020\uff082\uff09\uff0c [ 3,4,5]\u6709\u9ed8\u8ba4\u884c\u4e3a\uff0c1 \u5fc5\u987b\u5b9a\u4e49<\/li>\n<li>\u5b9a\u4e49\u4e86\u62f7\u8d1d\u8d4b\u503c\uff084\uff09\uff0c [1,2,3, 5]\u6709\u9ed8\u8ba4\u884c\u4e3a\uff0c1\u6709\u9ed8\u8ba4\u51fd\u6570<br \/>\n\u79fb\u52a8\u6784\u9020\u548c\u79fb\u52a8\u8d4b\u503c\uff1a<\/li>\n<li>\u5b9a\u4e49\u4e86\u79fb\u52a8\u6784\u9020\uff083\uff09\uff0c [2, 4, 5] \u672a\u5b9a\u4e49\uff0c 1\u5fc5\u987b\u5b9a\u4e49<\/li>\n<li>\u5b9a\u4e49\u4e86\u79fb\u52a8\u8d4b\u503c\uff085\uff09\uff0c [2, 4, 5] \u672a\u5b9a\u4e49\uff0c 1\u6709\u9ed8\u8ba4\u51fd\u6570<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"27_%E6%88%90%E5%91%98%E7%BB%A7%E6%89%BF%E5%B1%9E%E6%80%A7\"><\/span>2.7 \u6210\u5458\u7ee7\u627f\u5c5e\u6027<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<table>\n<thead>\n<tr>\n<th><\/th>\n<th>public \u7ee7\u627f<\/th>\n<th>protected \u7ee7\u627f<\/th>\n<th>private \u7ee7\u627f<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>public \u6210\u5458<\/td>\n<td>public<\/td>\n<td>protected<\/td>\n<td>private<\/td>\n<\/tr>\n<tr>\n<td>protected \u6210\u5458<\/td>\n<td>protected<\/td>\n<td>protected<\/td>\n<td>private<\/td>\n<\/tr>\n<tr>\n<td>private \u6210\u5458<\/td>\n<td>private<\/td>\n<td>private<\/td>\n<td>private<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3><span class=\"ez-toc-section\" id=\"28_%E5%85%B6%E5%AE%83%E7%89%B9%E6%80%A7\"><\/span>2.8 \u5176\u5b83\u7279\u6027<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>\u8fd0\u7b97\u7b26\u91cd\u8f7d<\/li>\n<li>\u53ef\u4ee5\u65f6\u5019\u7528\u6210\u5458\u51fd\u6570\u91cd\u8f7d\u8fd0\u7b97\u7b26\uff0c\u4e5f\u53ef\u4ee5\u4f7f\u7528\u975e\u6210\u5458\u51fd\u6570\u91cd\u8f7d\u8fd0\u7b97\u7b26<\/li>\n<li>\u5173\u952e\u5b57<\/li>\n<li><strong><em>final<\/em><\/strong><\/li>\n<li><strong><em>override\uff1a\u58f0\u660e\u865a\u51fd\u6570\u88ab\u91cd\u8f7d<\/em><\/strong><\/li>\n<li><strong><em>virtual:<\/em><\/strong><\/li>\n<li>friends<\/li>\n<li>\u53cb\u5143\u51fd\u6570\u6216\u8005\u53cb\u5143\u7c7b\u7684\u58f0\u660e\u4f4d\u7f6e\uff0c\u53ef\u4ee5\u5728public, protect, private\u91cc\u9762<\/li>\n<li>\u4e00\u4e2a\u51fd\u6570\u6216\u8005\u7c7b\uff0c\u53ef\u4ee5\u662f\u591a\u4e2a\u7c7b\u7684\u53cb\u5143\u51fd\u6570\u6216\u8005\u53cb\u5143\u7c7b<\/li>\n<li>friend class T\u53ef\u4ee5\u7cbe\u7b80\u4e3afriend T<\/li>\n<li>\u5355\u5217\u5b9e\u73b0\u8981\u70b9<\/li>\n<li>\u7981\u6b62\u62f7\u8d1d\u6784\u9020\uff0c\u62f7\u8d1d\u8d4b\u503c\uff0c\u79fb\u52a8\u6784\u9020\u548c\u79fb\u52a8\u8d4b\u503c<\/li>\n<li>\u6784\u9020\u51fd\u6570\u548c\u6790\u6784\u51fd\u6570\u58f0\u660e\u4e3aprotect\u6216\u8005private<\/li>\n<li>\u5b9e\u73b0\u4e00\u4e2a\u552f\u4e00\u5355\u4f8b\u5bf9\u8c61\u548c\u4e00\u4e2a\u5168\u5c40\u8bbf\u95ee\u51fd\u6570<\/li>\n<li>explicit<\/li>\n<li><code>explicit<\/code> \u5173\u952e\u5b57\u53ea\u5bf9\u5355\u4e2a\u53c2\u6570\u7684\u6784\u9020\u51fd\u6570\u6709\u6548<\/li>\n<li><code>explicit<\/code> \u53ef\u4ee5\u963b\u6b62\u7f16\u8bd1\u5668\u7684\u9690\u5f0f\u8f6c\u6362\u89c4\u5219<\/li>\n<\/ul>\n<p><code>cpp<br \/>\n  Person p = {\"mj\"}; \/\/ \u62f7\u8d1d\u521d\u59cb\u5316<br \/>\n  Person p{\"mj\"};    \/\/ \u76f4\u63a5\u521d\u59cb\u5316<\/code><\/p>\n<ul>\n<li>\u7ee7\u627f\u6784\u9020\u51fd\u6570\u7981\u6b62\u4f7f\u7528\u573a\u666f<\/li>\n<li><strong><em>\u57fa\u7c7b\u6784\u9020\u51fd\u6570\u4e3a\u79c1\u6709\u6210\u5458\u51fd\u6570<\/em><\/strong><\/li>\n<li><strong><em>\u6d3e\u751f\u7c7b\u4ece\u57fa\u7c7b\u4e2d\u865a\u7ee7\u627f<\/em><\/strong><\/li>\n<li><strong><em>\u4f7f\u7528\u7ee7\u627f\u6784\u9020\u51fd\u6570\uff0c\u7f16\u8bd1\u5668\u5c31\u4e0d\u4f1a\u4e3a\u5b50\u7c7b\u751f\u6210\u9ed8\u8ba4\u7684\u6784\u9020\u51fd\u6570<\/em><\/strong><\/li>\n<li><strong><em>\u4f7f\u7528\u7ee7\u627f\u6784\u9020\u51fd\u6570\uff0c\u65e0\u6cd5\u521d\u59cb\u5316\u6d3e\u751f\u7c7b\u6210\u5458\u53d8\u91cf\uff0c\u53ef\u4ee5\u4f7f\u7528c11\u6210\u5458\u53d8\u91cf\u521d\u59cb\u5316\u7279\u6027<\/em><\/strong><\/li>\n<li>\u51e0\u79cd\u521d\u59cb\u5316\u65b9\u5f0f<\/li>\n<li>\u5217\u8868\u521d\u59cb\u5316\uff1a<code>int a[] = {1, 2, 3, 4}<\/code><\/li>\n<li>\u521d\u59cb\u5316\u5217\u8868\uff1a<code>A(int a, int b) : a_(a), b_(b) {}<\/code><\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"%E7%AC%AC_3_%E7%AB%A0_%E5%AE%B9%E5%99%A8%E7%B1%BB%E5%9E%8B\"><\/span>\u7b2c 3 \u7ae0 \u5bb9\u5668\u7c7b\u578b<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<blockquote>\n<p><strong>\u8bf4\u660e<\/strong>\uff1a\u7c7b\u7684\u9759\u6001\u6210\u5458\u4e3a\u4ec0\u4e48\u9700\u8981\u5b9a\u4e49\uff1f\u9759\u6001\u6210\u5458\u53d8\u91cf\u4e3a\u6240\u6709\u7c7b\u5bf9\u8c61\u5171\u4eab\uff0c\u7c7b\u5b9a\u4e49\u53ea\u662f\u58f0\u660e\u4e86\u53d8\u91cf\u3002<\/p>\n<\/blockquote>\n<table>\n<thead>\n<tr>\n<th>\u7c7b\u578b<\/th>\n<th>\u540d\u79f0<\/th>\n<th>\u5b58\u50a8\u7ed3\u6784<\/th>\n<th>\u63d2\u5165\u548c\u5220\u9664<\/th>\n<th>\u968f\u673a\u5b58\u53d6<\/th>\n<th>\u5907\u6ce8<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\u987a\u5e8f\u7ed3\u6784<\/td>\n<td>list<\/td>\n<td>\u975e\u8fde\u7eed\u5b58\u50a8 \u5185\u5b58\u5360\u7528\u4e2d<\/td>\n<td>\u6548\u7387\u9ad8<\/td>\n<td>T(n)=O(n)<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>vector<\/td>\n<td>\u8fde\u7eed\u5b58\u50a8 \u5185\u5b58\u5360\u7528\u5c11<\/td>\n<td>\u4e0d\u5fc5\u8981\u7684\u5185\u5b58\u62f7\u8d1d T(n)=O(n)<\/td>\n<td>T(n)=O(1)<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>deque<\/td>\n<td>\u8fde\u7eed\u5b58\u50a8 \u5185\u5b58\u5360\u7528\u591a<\/td>\n<td>\u9996\u5c3e\u5feb\u901f\u63d2\u5165\u548c\u5220\u9664<\/td>\n<td>T(n)=O(1)<\/td>\n<td>\u878d\u5408\u4e86vector\u548clist\u7684\u529f\u80fd<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>forward_list<\/td>\n<td>\u5355\u5411\u94fe\u8868<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>std::array<\/td>\n<td>\u6570\u7ec4\uff0c\u65b9\u4fbf\u4f7f\u7528stl\u7b97\u6cd5<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>\u8054\u5408\u5bb9\u5668<\/td>\n<td>map<\/td>\n<td>\u7ea2\u9ed1\u6811<\/td>\n<td><\/td>\n<td>T(n)=O(lgN)<\/td>\n<td>\u6709\u5e8f<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>multimap<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>set<\/td>\n<td>\u7ea2\u9ed1\u6811<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>multiset<\/td>\n<td><\/td>\n<td><\/td>\n<td>T(n)=O(lgN)<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>unordered_set<\/td>\n<td>\u54c8\u5e0c\u8868 \u4e00\u7ef4\u6570\u7ec4+\u94fe\u8868<\/td>\n<td><\/td>\n<td>T(n)=O(1)<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>unordered_map<\/td>\n<td>\u54c8\u5e0c\u8868 \u4e00\u7ef4\u6570\u7ec4+\u94fe\u8868<\/td>\n<td><\/td>\n<td>T(n)=O(1)<\/td>\n<td>\u65e0\u5e8f<\/td>\n<\/tr>\n<tr>\n<td>\u5bb9\u5668\u9002\u914d<\/td>\n<td>priority queue<\/td>\n<td>vector+heap<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>stack<\/td>\n<td>list or deque\u5c01\u95ed\u5934\u90e8\u5b9e\u73b0<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>queue<\/td>\n<td>list or deque\u5c01\u95ed\u5934\u90e8\u5b9e\u73b0 \u9ed8\u8ba4\u4f7f\u7528deque<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3><span class=\"ez-toc-section\" id=\"31_std_tuple_%E5%92%8C_std_array\"><\/span>3.1 std::tuple \u548c std::array<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\uff08\u5f85\u8865\u5145\u5185\u5bb9\uff09<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E7%AC%AC_4_%E7%AB%A0_std_string\"><\/span>\u7b2c 4 \u7ae0 std::string<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"41_%E6%9E%84%E9%80%A0%E5%87%BD%E6%95%B0\"><\/span>4.1 \u6784\u9020\u51fd\u6570<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre><code class=\"language-cpp\">\/\/ 1. \u9ed8\u8ba4\u6784\u9020\u51fd\u6570\uff1a\u957f\u5ea6\u4e3a0\uff0c\u5bb9\u91cf\u4e3a\u67d0\u4e2a\u56fa\u5b9a\u5927\u5c0f\nstd::string empty;\n\n\/\/ 2. \u9519\u8bef\u7528\u6cd5\uff1a\u4f20\u5165NULL\u4f1acrash\uff0c\u56e0\u4e3astrlen(NULL)\u4f1acrash\n\/\/ std::string empty(NULL); \/\/ \u4e0d\u8981\u8fd9\u6837\u505a\uff01\n\n\/\/ 3. \u79fb\u52a8\u6784\u9020\uff1astr\u4f1a\u88ab\u8bbe\u7f6e\u4e3a\u7a7a\nstd::string moved = std::move(str); \/\/ str will be set empty\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"42_%E8%B7%A8%E6%A8%A1%E5%9D%97%E4%BC%A0%E9%80%92%E9%97%AE%E9%A2%98\"><\/span>4.2 \u8de8\u6a21\u5757\u4f20\u9012\u95ee\u9898<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<table>\n<thead>\n<tr>\n<th>\u573a\u666f<\/th>\n<th>\u539f\u56e0<\/th>\n<th>\u73b0\u8c61<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>VC\u8fd0\u884c\u5e93\u9759\u6001\u548c\u52a8\u6001\u6df7\u7528<\/td>\n<td>\u5b58\u5728\u4e24\u4e2acrtheap<\/td>\n<td>crash<\/td>\n<\/tr>\n<tr>\n<td>VC\u8fd0\u884c\u5e93\u4f7f\u7528\u4e0d\u540c\u7248\u672c<\/td>\n<td>\u5b58\u5728\u4e24\u4e2acrtheap<\/td>\n<td>crash<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3><span class=\"ez-toc-section\" id=\"43_STL%E7%B1%BB%E8%B7%A8%E6%A8%A1%E5%9D%97%E5%AD%98%E5%9C%A8%E9%97%AE%E9%A2%98%E7%9A%84%E6%9C%AC%E8%B4%A8\"><\/span>4.3 STL\u7c7b\u8de8\u6a21\u5757\u5b58\u5728\u95ee\u9898\u7684\u672c\u8d28<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>STL\u63d0\u4f9b\u7684\u7c7b\u76f4\u63a5\u6216\u8005\u95f4\u63a5\u7684\u4f7f\u7528\u4e86\u9759\u6001\u53d8\u91cf\uff0c\u5bfc\u81f4\u4e0d\u540c\u6a21\u5757\u5b58\u5728\u591a\u4efd\u9759\u6001\u53d8\u91cf<\/li>\n<li>\u4e0d\u540cSTL\u7248\u672c\u8d44\u6e90\u7684\u5206\u914d\u548c\u5220\u9664\u5b9e\u73b0\u4e0d\u4e00\u6837<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"44_%E8%A7%A3%E5%86%B3%E6%96%B9%E6%B3%95\"><\/span>4.4 \u89e3\u51b3\u65b9\u6cd5<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u6a21\u5757\u4e4b\u95f4\u7684\u6570\u636e\u4f20\u9012\u4f7f\u7528\u57fa\u672c\u7684\u6570\u636e\u7c7b\u578b\u3002<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E7%AC%AC_5_%E7%AB%A0_%E5%BC%BA%E7%B1%BB%E5%9E%8B%E6%9E%9A%E4%B8%BE\"><\/span>\u7b2c 5 \u7ae0 \u5f3a\u7c7b\u578b\u679a\u4e3e<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"51_%E5%8E%9F%E6%9C%89%E6%9E%9A%E4%B8%BE%E7%B1%BB%E5%9E%8B%E7%9A%84%E7%BC%BA%E9%99%B7\"><\/span>5.1 \u539f\u6709\u679a\u4e3e\u7c7b\u578b\u7684\u7f3a\u9677<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>\u679a\u4e3e\u53d8\u91cf\u5168\u5c40\u53ef\u89c1<\/li>\n<li>\u6570\u503c\u6bd4\u8f83\u65f6\uff0c\u88ab\u9690\u5f0f\u63d0\u5347\u4e3aint\u7c7b\u578b\u7684\u6570\u636e<\/li>\n<li>\u679a\u4e3e\u7c7b\u578b\u5360\u7528\u7684\u7a7a\u95f4\u5927\u5c0f\u662f\u4e0d\u786e\u5b9a\u7684<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"52_%E5%BC%BA%E7%B1%BB%E5%9E%8B%E6%9E%9A%E4%B8%BE%E5%AE%9A%E4%B9%89\"><\/span>5.2 \u5f3a\u7c7b\u578b\u679a\u4e3e\u5b9a\u4e49<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre><code class=\"language-cpp\">enum class Type : char {\n    General, \n    Light, \n    Medium, \n    Heavy\n};\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"53_%E5%8E%9F%E6%9C%89%E6%9E%9A%E4%B8%BE%E7%B1%BB%E5%9E%8B%E7%9A%84%E6%89%A9%E5%B1%95\"><\/span>5.3 \u539f\u6709\u679a\u4e3e\u7c7b\u578b\u7684\u6269\u5c55<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre><code class=\"language-cpp\">enum Type: char {\n    General, \n    Light, \n    Medium, \n    Heavy\n};\n\n\/\/ \u679a\u4e3e\u6210\u5458\u9664\u4e86\u81ea\u52a8\u8f93\u51fa\u5230\u7236\u4f5c\u7528\u57df\uff0c\u4e5f\u53ef\u4ee5\u5728\u679a\u4e3e\u7c7b\u578b\u5b9a\u4e49\u7684\u4f5c\u7528\u57df\u6709\u6548\nType t1 = General;      \/\/ \u53ef\u4ee5\u4f7f\u7528\nType t2 = Type::General; \/\/ \u4e5f\u53ef\u4ee5\u4f7f\u7528\n<\/code><\/pre>\n<h1><span class=\"ez-toc-section\" id=\"%E7%AC%AC%E4%BA%8C%E9%83%A8%E5%88%86_C11\"><\/span>\u7b2c\u4e8c\u90e8\u5206 C++11<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<h2><span class=\"ez-toc-section\" id=\"%E7%AC%AC_1_%E7%AB%A0_%E7%B1%BB%E5%9E%8B%E6%8E%A8%E5%AF%BC\"><\/span>\u7b2c 1 \u7ae0 \u7c7b\u578b\u63a8\u5bfc<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"11_%E6%A8%A1%E6%9D%BF%E7%B1%BB%E5%9E%8B%E6%8E%A8%E5%AF%BC\"><\/span>1.1 \u6a21\u677f\u7c7b\u578b\u63a8\u5bfc<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre><code class=\"language-cpp\">template &lt;typename T&gt;\nvoid f(ParamType param);\n\nf(expr);\n<\/code><\/pre>\n<h4><span class=\"ez-toc-section\" id=\"%E6%83%85%E5%BD%A21%EF%BC%9AParamType_%E6%98%AF%E4%B8%80%E4%B8%AA%E6%8C%87%E9%92%88%E6%88%96%E8%80%85%E5%BC%95%E7%94%A8%E7%B1%BB%E5%9E%8B%EF%BC%8C%E4%BD%86%E4%B8%8D%E6%98%AF%E4%B8%80%E4%B8%AA%E9%80%9A%E7%94%A8%E5%BC%95%E7%94%A8\"><\/span>\u60c5\u5f621\uff1aParamType \u662f\u4e00\u4e2a\u6307\u9488\u6216\u8005\u5f15\u7528\u7c7b\u578b\uff0c\u4f46\u4e0d\u662f\u4e00\u4e2a\u901a\u7528\u5f15\u7528<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<ul>\n<li>\u5982\u679cexpr\u662f\u4e00\u4e2a\u5f15\u7528\uff0c\u5ffd\u7565\u5f15\u7528\u90e8\u5206<\/li>\n<li>\u5c06expr\u7684\u7c7b\u578b\u548cParamType\u8fdb\u884c\u6a21\u5f0f\u5339\u914d\uff0c\u6765\u51b3\u5b9aT\u7684\u7c7b\u578b<\/li>\n<\/ul>\n<pre><code class=\"language-cpp\">int x = 27;\nconst int cx = x;\nconst int&amp; rx = x;\n\n\/\/ sample 1\ntemplate &lt;typename T&gt;\nvoid f(T&amp; param);\nf(x);  \/\/ T is int, ParamType is int&amp;\nf(cx); \/\/ T is const int, ParamType is const int&amp;\nf(rx); \/\/ T is const int, ParamType is const int&amp;\n\n\/\/ sample 2\ntemplate &lt;typename T&gt;\nvoid f(const T&amp; param);\nf(x);  \/\/ T is int, ParamType is const int&amp;\nf(cx); \/\/ T is int, ParamType is const int&amp;\nf(rx); \/\/ T is int, ParamType is const int&amp;\n<\/code><\/pre>\n<h4><span class=\"ez-toc-section\" id=\"%E6%83%85%E5%BD%A22%EF%BC%9AParamType_%E6%98%AF%E4%B8%80%E4%B8%AA%E9%80%9A%E7%94%A8%E5%BC%95%E7%94%A8\"><\/span>\u60c5\u5f622\uff1aParamType \u662f\u4e00\u4e2a\u901a\u7528\u5f15\u7528<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<ul>\n<li>\u5982\u679cexpr\u662f\u4e00\u4e2a\u5de6\u503c\uff0cT\u548cParamType\u90fd\u88ab\u63a8\u5bfc\u4e3a\u5de6\u503c\u5f15\u7528<\/li>\n<li>\u5982\u679cexpr\u662f\u4e00\u4e2a\u53f3\u503c\uff0c\u53c2\u7167\u60c5\u5f621<\/li>\n<\/ul>\n<pre><code class=\"language-cpp\">int x = 27;\nconst int cx = x;\nconst int&amp; rx = x;\n\ntemplate &lt;typename T&gt;\nvoid f(T&amp;&amp; param);\nf(x);  \/\/ T is int&amp;, ParamType is int&amp;\nf(cx); \/\/ T is const int&amp;, ParamType is const int&amp;\nf(rx); \/\/ T is const int&amp;, ParamType is const int&amp;\nf(27); \/\/ T is int, ParamType is int&amp;&amp;\n<\/code><\/pre>\n<h4><span class=\"ez-toc-section\" id=\"%E6%83%85%E5%BD%A23%EF%BC%9AParamType_%E6%97%A2%E4%B8%8D%E6%98%AF%E6%8C%87%E9%92%88%E4%B9%9F%E4%B8%8D%E6%98%AF%E5%BC%95%E7%94%A8\"><\/span>\u60c5\u5f623\uff1aParamType \u65e2\u4e0d\u662f\u6307\u9488\u4e5f\u4e0d\u662f\u5f15\u7528<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<ul>\n<li>\u5982\u679cexpr\u662f\u4e00\u4e2a\u5f15\u7528\uff0c\u5ffd\u7565\u5f15\u7528\u90e8\u5206<\/li>\n<li>\u5ffd\u7565expr\u7684cv\u7279\u6027<\/li>\n<\/ul>\n<pre><code class=\"language-cpp\">int x = 27;\nconst int cx = x;\nconst int&amp; rx = x;\n\ntemplate &lt;typename T&gt;\nvoid f(T param);\nf(x);  \/\/ T \u548c ParamType \u90fd\u662f int\nf(cx); \/\/ T \u548c ParamType \u90fd\u662f int\nf(rx); \/\/ T \u548c ParamType \u90fd\u662f int\n<\/code><\/pre>\n<blockquote>\n<p><strong>\u6ce8\u610f<\/strong>\uff1a\u6570\u7ec4\u548c\u51fd\u6570\u5b9e\u53c2\u9000\u5316\u4e3a\u6307\u9488\uff0c\u9664\u975e\u662f\u4f20\u7ed9\u5f15\u7528\u3002<\/p>\n<\/blockquote>\n<h3><span class=\"ez-toc-section\" id=\"12_auto%E7%B1%BB%E5%9E%8B%E6%8E%A8%E5%AF%BC\"><\/span>1.2 auto\u7c7b\u578b\u63a8\u5bfc<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>\u539f\u7406\uff1a<\/strong> \u6a21\u677f\u7684\u7c7b\u578b\u63a8\u5bfc\u662fauto\u7279\u6027\u7684\u57fa\u7840\uff0cauto\u53ea\u662f\u7c7b\u578b\u63a8\u5bfc\uff0c\u4e0d\u4f1a\u5e26\u8d70\u4efb\u4f55\u9650\u5b9a\u7b26\u6216\u8005\u5f15\u7528\u7c7b\u578b\u3002<\/p>\n<pre><code class=\"language-cpp\">template &lt;typename T&gt; \nvoid f(ParamType param);\n\nconst auto cx = 27;\n\/\/ T -&gt; auto\n\/\/ ParamType -&gt; const auto\n<\/code><\/pre>\n<p>auto\u7c7b\u578b\u63a8\u5bfc\u9075\u5faa\u4e0e\u6a21\u677f\u7c7b\u578b\u63a8\u5bfc\u76f8\u540c\u7684\u89c4\u5219\uff1a<\/p>\n<ul>\n<li><strong>\u60c5\u5f621\uff1a<\/strong> \u7c7b\u578b\u6307\u793a\u7b26\u662f\u4e00\u4e2a\u6307\u9488\u6216\u8005\u5f15\u7528\uff0c\u4f46\u4e0d\u662f\u4e00\u4e2a\u901a\u7528\u5f15\u7528<\/li>\n<li><strong>\u60c5\u5f622\uff1a<\/strong> \u7c7b\u578b\u6307\u793a\u7b26\u662f\u4e00\u4e2a\u901a\u7528\u5f15\u7528<\/li>\n<li><strong>\u60c5\u5f623\uff1a<\/strong> \u7c7b\u578b\u6307\u793a\u7b26\u65e2\u4e0d\u662f\u6307\u9488\u4e5f\u4e0d\u662f\u5f15\u7528<\/li>\n<\/ul>\n<pre><code class=\"language-cpp\">auto x = 27;              \/\/ x is int\nconst auto cx = x;        \/\/ cx is const int\nconst auto&amp; rx = x;       \/\/ rx is const int&amp;\nauto&amp;&amp; uref1 = x;         \/\/ x is int and lvalue, so uref1 is int&amp;\nauto&amp;&amp; uref2 = cx;        \/\/ cx is const int and lvalue, so uref2 is const int&amp;\nauto&amp;&amp; uref3 = 27;        \/\/ 27 is int and rvalue, so uref3 is int&amp;&amp;\n<\/code><\/pre>\n<p><strong>\u6ce8\u610f\u4e8b\u9879\uff1a<\/strong><br \/>\n&#8211; auto\u5047\u82b1\u62ec\u53f7\u521d\u59cb\u5316\u4ee3\u8868\u4e00\u4e2a<code>std::initializer_list<\/code>\uff0c\u4f46\u6a21\u677f\u7c7b\u578b\u63a8\u5bfc\u5374\u4e0d\u662f<br \/>\n&#8211; C++14\u4f7f\u7528auto\u6765\u63a8\u5bfc\u51fd\u6570\u8fd4\u56de\u7c7b\u578b\u548clambdas\u5f62\u53c2\uff0c\u8d70\u7684\u662f\u6a21\u677f\u7c7b\u578b\u63a8\u5bfc<br \/>\n&#8211; \u58f0\u660e\u5f15\u7528\u7684\u53d8\u91cf\u4f1a\u4fdd\u6301\u5176\u5f15\u7528\u5bf9\u8c61\u76f8\u540c\u7684\u5c5e\u6027<br \/>\n&#8211; \u4e0d\u80fd\u7528\u4e8e\u51fd\u6570\u53c2\u6570\u3001\u975e\u9759\u6001\u6210\u5458\u53d8\u91cf\u3001\u6570\u7ec4<br \/>\n&#8211; \u4e0d\u53ef\u89c1\u7684\u4ee3\u7406\u7c7b\u578b\u4f1a\u5bfc\u81f4auto\u4ece\u521d\u59cb\u5316\u8868\u8fbe\u5f0f\u63a8\u5bfc\u51fa\u6765\u7684\u7c7b\u578b\u662f\u9519\u8bef\u7684<br \/>\n&#8211; \u663e\u5f0f\u521d\u59cb\u5316\u7c7b\u578b\u539f\u5219\u5f3a\u884c\u8ba9auto\u63a8\u5bfc\u51fa\u4f60\u60f3\u8981\u7684\u7c7b\u578b<\/p>\n<h3><span class=\"ez-toc-section\" id=\"13_decltype\"><\/span>1.3 decltype<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>\u6982\u8ff0\uff1a<\/strong> decltype\u7c7b\u578b\u63a8\u5bfc\u4f1a\u5e26\u8d70cv\u9650\u5b9a\u7b26\u3001\u6307\u9488\u6216\u8005\u5f15\u7528\uff0c\u590d\u8ff0\u4e00\u904d\u53d8\u91cf\u540d\u6216\u8868\u8fbe\u5f0f\u7684\u5b9e\u9645\u7c7b\u578b\u3002<\/p>\n<p><strong>\u89c4\u5219\uff1a<\/strong><br \/>\n&#8211; \u5bf9\u4e8e\u975e\u53d8\u91cf\u540d\u7684\u7c7b\u578bT\u8868\u8fbe\u5f0f\uff0cdecltype\u603b\u662f\u62a5\u544a\u4e3a\u7c7b\u578bT&amp;<br \/>\n&#8211; T\u662f\u4e00\u4e2a\u5c06\u4ea1\u503c\uff0c\u8fd4\u56deT&amp;&amp;<br \/>\n&#8211; \u5269\u4e0b\u7684\u90fd\u662f\u8fd4\u56deT<br \/>\n&#8211; decltype\u80fd\u5e26\u8d70\u8868\u8fbe\u5f0f\u7684cv\u9650\u5b9a\u7b26<\/p>\n<pre><code class=\"language-cpp\">\/\/ decltype(auto): auto\u6807\u660e\u7c7b\u578b\u8981\u88ab\u63a8\u5bfc\uff0c\u800cdecltype\u6807\u660e\u63a8\u5bfc\u65f6\u7528decltype\u7c7b\u578b\ndecltype(auto) x = expr;\n<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"%E7%AC%AC_2_%E7%AB%A0_%E5%8F%B3%E5%80%BC\"><\/span>\u7b2c 2 \u7ae0 \u53f3\u503c<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"21_%E5%9F%BA%E6%9C%AC%E6%A6%82%E5%BF%B5\"><\/span>2.1 \u57fa\u672c\u6982\u5ff5<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>\u7f16\u8bd1\u5668\u533a\u5206\u4e86\u5de6\u503c\u548c\u53f3\u503c\uff0c\u5bf9\u53f3\u503c\u8c03\u7528\u4e86\u79fb\u52a8\u6784\u9020\u51fd\u6570\u548c\u79fb\u52a8\u8d4b\u503c\u64cd\u4f5c\u7b26<\/li>\n<li>\u6ca1\u6709\u79fb\u52a8\u6784\u9020\u51fd\u6570\u7684\u60c5\u51b5\uff0c\u8c03\u7528\u62f7\u8d1d\u6784\u9020\u51fd\u6570<\/li>\n<li><code>std::move_if_noexcept<\/code>\uff1a\u79fb\u52a8\u6784\u9020\u51fd\u6570\u5b58\u5728\u6709noexcept\u5173\u952e\u5b57\u624d\u79fb\u52a8<\/li>\n<li>\u62f7\u8d1d\u8bed\u4e49\u548c\u79fb\u52a8\u8bed\u4e49<\/li>\n<li>\u4f55\u65f6\u89e6\u53d1\u79fb\u52a8\u6784\u9020\u51fd\u6570\uff1a\u5f53\u4f7f\u7528\u53f3\u503c\uff08\u5305\u62ec\u5c06\u4ea1\u503c\uff09\u8fdb\u884c\u6784\u9020\u6216\u8d4b\u503c\u65f6<\/li>\n<\/ul>\n<p><strong>\u5de6\u503c\u548c\u53f3\u503c\u7684\u5b9a\u4e49\uff1a<\/strong><br \/>\n&#8211; <strong>\u5de6\u503c<\/strong>\uff1a\u53ef\u53d6\u5730\u5740\uff0c\u6709\u540d\u5b57\u7684<br \/>\n&#8211; <strong>\u53f3\u503c<\/strong>\uff1a\u4e0d\u80fd\u53d6\u5730\u5740\uff0c\u6ca1\u6709\u540d\u5b57\u7684<\/p>\n<table>\n<thead>\n<tr>\n<th>\u540d\u79f0<\/th>\n<th>\u89e3\u91ca<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\u5de6\u503c<\/td>\n<td>\u53ef\u53d6\u5730\u5740\uff0c\u6709\u540d\u5b57<\/td>\n<\/tr>\n<tr>\n<td>\u5c06\u4ea1\u503c<\/td>\n<td>C++11\u65b0\u589e\uff0c\u51fd\u6570\u8fd4\u56de\u7684\u53f3\u503c\u5f15\u7528\uff0cstd::move\u7684\u8fd4\u56de\u503c<\/td>\n<\/tr>\n<tr>\n<td>\u7eaf\u53f3\u503c<\/td>\n<td>C++98\u7684\u6982\u5ff5\uff0c\u51fd\u6570\u8fd4\u56de\u7684\u4e34\u65f6\u53d8\u91cf\uff0c\u8fd0\u7b97\u8868\u8fbe\u5f0f\uff0c\u5b57\u9762\u5e38\u91cf\uff0clambda\u8868\u8fbe\u5f0f<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3><span class=\"ez-toc-section\" id=\"22_%E5%B7%A6%E5%80%BC%E5%92%8C%E5%8F%B3%E5%80%BC%E5%BC%95%E7%94%A8\"><\/span>2.2 \u5de6\u503c\u548c\u53f3\u503c\u5f15\u7528<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><img decoding=\"async\" alt=\"\u5de6\u503c\u548c\u53f3\u503c\u5f15\u7528\u793a\u610f\u56fe\" src=\"https:\/\/www.ixriver.com\/wp-content\/uploads\/2026\/01\/image_6.png\" \/><\/p>\n<h4><span class=\"ez-toc-section\" id=\"221_%E5%BC%95%E7%94%A8%E7%B1%BB%E5%9E%8B%E5%88%A4%E6%96%AD\"><\/span>2.2.1 \u5f15\u7528\u7c7b\u578b\u5224\u65ad<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<pre><code class=\"language-cpp\">#include &lt;type_traits&gt;\n\n\/\/ \u4f7f\u7528\u793a\u4f8b\nis_rvalue_reference&lt;T&gt;\nis_lvalue_reference&lt;T&gt;\nis_reference&lt;T&gt;\n<\/code><\/pre>\n<h4><span class=\"ez-toc-section\" id=\"222_%E7%A7%BB%E5%8A%A8%E7%B1%BB%E5%9E%8B%E5%88%A4%E6%96%AD\"><\/span>2.2.2 \u79fb\u52a8\u7c7b\u578b\u5224\u65ad<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<pre><code class=\"language-cpp\">#include &lt;type_traits&gt;\n\n\/\/ \u4f7f\u7528\u793a\u4f8b\nis_move_constructible&lt;T&gt;\nis_trivially_move_constructible&lt;T&gt;\nis_nothrow_move_constructible&lt;T&gt;\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"23_%E5%BC%95%E7%94%A8%E6%8A%98%E5%8F%A0%E4%B8%8E%E5%AE%8C%E7%BE%8E%E8%BD%AC%E5%8F%91\"><\/span>2.3 \u5f15\u7528\u6298\u53e0\u4e0e\u5b8c\u7f8e\u8f6c\u53d1<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>\u5b9a\u4e49\u4e2d\u51fa\u73b0\u4e86\u5de6\u503c\u5f15\u7528\uff0c\u5f15\u7528\u6298\u53e0\u603b\u662f\u4f18\u5148\u5c06\u5176\u6298\u53e0\u4e3a\u5de6\u503c\u5f15\u7528<\/li>\n<li>\u5982\u679c\u4e24\u4e2a\u5f15\u7528\u4e2d\u7684\u4efb\u4f55\u4e00\u4e2a\u662flvalue\u5f15\u7528\uff0c\u90a3\u4e48\u7ed3\u679c\u5c31\u662flvalue\u5f15\u7528<\/li>\n<li>\u4ea7\u751f\u5f15\u7528\u6298\u53e0\u7684\u4e0a\u4e0b\u6587\u67094\u79cd\uff1a\u6a21\u677f\u5b9e\u4f8b\u5316\uff0cauto\u7c7b\u578b\u751f\u6210\uff0ctypedef\u548c\u522b\u540d\u58f0\u660e\uff0c\u4ee5\u53cadecltype<\/li>\n<\/ul>\n<pre><code class=\"language-cpp\">using TR = T&amp;;\nTR&amp; v = 1;\n<\/code><\/pre>\n<p><img decoding=\"async\" alt=\"\u5f15\u7528\u6298\u53e0\u793a\u610f\u56fe\" src=\"https:\/\/www.ixriver.com\/wp-content\/uploads\/2026\/01\/image_7.png\" \/><\/p>\n<p><strong>\u5b8c\u7f8e\u8f6c\u53d1\u793a\u4f8b\uff1a<\/strong><\/p>\n<pre><code class=\"language-cpp\">template &lt;typename T&gt;\nvoid IamForwording(T&amp;&amp; t) {\n    IrunCodeActually(static_cast&lt;T &amp;&amp;&gt;(t));\n}\n\n\/\/ \u5de6\u503c\u5f15\u7528\nvoid IamForwording(T&amp; &amp;&amp; t) {\n    IrunCodeActually(static_cast&lt;T&amp; &amp;&amp;&gt;(t));\n}\n\/\/ \u6298\u53e0\u4e3a\uff1a\nvoid IamForwording(T&amp; t) {\n    IrunCodeActually(static_cast&lt;T&amp;&gt;(t));\n}\n\n\/\/ \u53f3\u503c\u5f15\u7528\nvoid IamForwording(T&amp;&amp; &amp;&amp; t) {\n    IrunCodeActually(static_cast&lt;T&amp;&amp; &amp;&amp;&gt;(t));\n}\n\/\/ \u6298\u53e0\u4e3a\uff1a\nvoid IamForwording(T&amp;&amp; t) {\n    IrunCodeActually(static_cast&lt;T&amp;&amp;&gt;(t));\n}\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"24_%E7%90%86%E8%A7%A3std_move%E5%92%8Cstd_forward\"><\/span>2.4 \u7406\u89e3std::move\u548cstd::forward<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\uff08\u5f85\u8865\u5145\u8be6\u7ec6\u5185\u5bb9\uff09<\/p>\n<h3><span class=\"ez-toc-section\" id=\"25_%E5%8C%BA%E5%88%86%E9%80%9A%E7%94%A8%E5%BC%95%E7%94%A8%E5%92%8C%E5%8F%B3%E5%80%BC%E5%BC%95%E7%94%A8\"><\/span>2.5 \u533a\u5206\u901a\u7528\u5f15\u7528\u548c\u53f3\u503c\u5f15\u7528<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>\u901a\u7528\u5f15\u7528\u7684\u6761\u4ef6\uff1a<\/strong><br \/>\n&#8211; \u5b58\u5728\u7c7b\u578b\u63a8\u5bfc<br \/>\n&#8211; \u5f15\u7528\u58f0\u660e\u5fc5\u987b\u662fT&amp;&amp;<br \/>\n&#8211; \u6216\u8005\u4e00\u4e2a\u5bf9\u8c61\u58f0\u660e\u4e3aauto&amp;&amp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"26_%E5%AF%B9%E5%8F%B3%E5%80%BC%E5%BC%95%E7%94%A8%E4%BD%BF%E7%94%A8std_move%EF%BC%8C%E5%AF%B9%E9%80%9A%E7%94%A8%E5%BC%95%E7%94%A8%E4%BD%BF%E7%94%A8std_forward\"><\/span>2.6 \u5bf9\u53f3\u503c\u5f15\u7528\u4f7f\u7528std::move\uff0c\u5bf9\u901a\u7528\u5f15\u7528\u4f7f\u7528std::forward<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<blockquote>\n<p><strong>\u6ce8\u610f<\/strong>\uff1a\u7cdf\u7cd5\u7684\u60f3\u6cd5\u662f\u5bf9\u901a\u7528\u5f15\u7528\u4f7f\u7528std::move\u3002<\/p>\n<\/blockquote>\n<p><strong>\u8fd4\u56de\u503c\u4f18\u5316\uff08RVO\uff09\uff1a<\/strong><br \/>\n&#8211; \u5c40\u90e8\u5bf9\u8c61\u7684\u7c7b\u578b\u548c\u8fd4\u56de\u503c\u7684\u7c7b\u578b\u76f8\u540c<br \/>\n&#8211; \u8fd4\u56de\u7684\u5c31\u662f\u90a3\u4e2a\u5c40\u90e8\u53d8\u91cf<\/p>\n<p>\u5982\u679cRVO\u6761\u4ef6\u6ee1\u8db3\uff0c\u4f46\u7f16\u8bd1\u5668\u9009\u62e9\u4e0d\u7701\u53bb\u62f7\u8d1d\uff0c\u8fd4\u56de\u7684\u5bf9\u8c61\u5fc5\u987b\u662f\u53f3\u503c\u3002\u5728\u7b26\u5408RVO\u7684\u5c40\u90e8\u5bf9\u8c61\uff0c\u575a\u51b3\u4e0d\u80fd\u4f7f\u7528<code>std::move<\/code>\u6216\u8005<code>std::forward<\/code>\u3002<\/p>\n<h3><span class=\"ez-toc-section\" id=\"27_%E9%80%9A%E7%94%A8%E5%BC%95%E7%94%A8%E9%87%8D%E8%BD%BD\"><\/span>2.7 \u901a\u7528\u5f15\u7528\u91cd\u8f7d<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>\u5efa\u8bae\uff1a<\/strong> \u907f\u514d\u5bf9\u901a\u7528\u5f15\u7528\u7684\u91cd\u8f7d\u3002<\/p>\n<p><strong>\u901a\u7528\u5f15\u7528\u91cd\u8f7d\u7684\u53ef\u9009\u65b9\u5f0f\uff1a<\/strong><br \/>\n&#8211; \u653e\u5f03\u91cd\u8f7d<br \/>\n&#8211; \u4f7f\u7528const\u5de6\u503c\u5f15\u7528\uff0c\u6548\u7387\u4e0d\u662f\u90a3\u4e48\u9ad8<br \/>\n&#8211; \u4f20\u503c<br \/>\n&#8211; \u4f7f\u7528\u6807\u7b7e\u5206\u6d3e<\/p>\n<p><strong>\u4ee3\u7801\u793a\u4f8b\uff1a<\/strong><\/p>\n<pre><code class=\"language-cpp\">std::multiset&lt;std::string&gt; names;\n\ntemplate &lt;typename T&gt;\nvoid logAndAdd(T&amp;&amp; name) {\n    names.emplace(std::forward&lt;T&gt;(name));\n}\n\nvoid logAndAdd(int idx) {\n    names.emplace(std::to_string(idx));\n}\n\n\/\/ \u6807\u7b7e\u5206\u6d3e\ntemplate &lt;typename T&gt;\nvoid logAndAddTag(T&amp;&amp; name) {\n    logAndAddImpl(std::forward&lt;T&gt;(name), \n                  std::is_integral&lt;typename std::remove_reference&lt;T&gt;::type&gt;());\n}\n\ntemplate &lt;typename T&gt;\nvoid logAndAddImpl(T&amp;&amp; name, std::false_type) {\n    names.emplace(std::forward&lt;T&gt;(name));\n}\n\ntemplate &lt;typename T&gt;\nvoid logAndAddImpl(int idx, std::true_type) {\n    names.emplace(std::to_string(idx));\n}\n<\/code><\/pre>\n<ul>\n<li>\u7ea6\u675f\u63a5\u6536\u901a\u7528\u5f15\u7528\u7684\u6a21\u677f<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"28_%E5%AE%8C%E7%BE%8E%E8%BD%AC%E5%8F%91%E5%A4%B1%E8%B4%A5%E7%9A%84%E6%83%85%E5%BD%A2\"><\/span>2.8 \u5b8c\u7f8e\u8f6c\u53d1\u5931\u8d25\u7684\u60c5\u5f62<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>\u82b1\u62ec\u53f7\u521d\u59cb\u5316<\/li>\n<li>0\u6216\u8005NULL\u4f5c\u4e3a\u7a7a\u6307\u9488<\/li>\n<li>\u53ea\u58f0\u660e\u7684\u5b8c\u6574static const\u6570\u636e\u6210\u5458<\/li>\n<li>\u91cd\u8f7d\u7684\u51fd\u6570\u540d\u6216\u8005\u6a21\u677f\u540d<\/li>\n<li>\u4f4d\u5b57\u6bb5<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"%E7%AC%AC_3_%E7%AB%A0_Lambda_%E8%A1%A8%E8%BE%BE%E5%BC%8F\"><\/span>\u7b2c 3 \u7ae0 Lambda \u8868\u8fbe\u5f0f<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"31_Lambda%E5%92%8C%E5%87%BD%E6%95%B0%E5%AF%B9%E8%B1%A1%EF%BC%88%E4%BB%BF%E5%87%BD%E6%95%B0%EF%BC%89\"><\/span>3.1 Lambda\u548c\u51fd\u6570\u5bf9\u8c61\uff08\u4eff\u51fd\u6570\uff09<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>lambda\u51fd\u6570\u4f1a\u8f6c\u6362\u4e3a\u4e00\u4e2a\u4eff\u51fd\u6570\u5bf9\u8c61<\/li>\n<li>lambda\u51fd\u6570\u9ed8\u8ba4\u662f\u5185\u8054\u7684\uff0c\u800c\u4e14\u662fconst<\/li>\n<li>lambda\u7684\u8fd4\u56de\u7c7b\u578b\u53ef\u4ee5\u7701\u7565\uff0c\u7531\u7f16\u8bd1\u5668\u8fdb\u884c\u7c7b\u578b\u63a8\u5bfc<\/li>\n<li>lambda\u6309\u503c\u4f20\u9012\uff0c\u5b9a\u4e49lambda\u7684\u65f6\u5019\u5c31\u5df2\u7ecf\u786e\u5b9a<\/li>\n<li>lambda\u6309\u5f15\u7528\u4f20\u9012\uff0c\u5176\u4f20\u9012\u7684\u503c\u7b49\u4e8elambda\u51fd\u6570\u8c03\u7528\u7684\u503c<\/li>\n<li>lambda\u662f\u4e00\u79cd\u95ed\u5305\u7c7b\u578b\uff0clambda\u8868\u8fbe\u5f0f\u4f1a\u4ea7\u751f\u4e00\u4e2a\u95ed\u5305\u7c7b\u578b\u7684\u4e34\u65f6\u5bf9\u8c61<\/li>\n<li>lambda\u8f6c\u6362\u51fd\u6570\u6307\u9488\u7684\u524d\u63d0\u662f\uff0c\u548c\u51fd\u6570\u539f\u578b\u4e00\u81f4\uff0c\u5e76\u4e14\u6ca1\u6709\u6355\u83b7\u4efb\u4f55\u53d8\u91cf<\/li>\n<li>\u5757\u4f5c\u7528\u57df\u4ee5\u5916\u7684lambda\u51fd\u6570\uff0c\u6355\u83b7\u5217\u8868\u5fc5\u987b\u4e3a\u7a7a<\/li>\n<\/ul>\n<h4><span class=\"ez-toc-section\" id=\"311_Lambda%E5%92%8C%E4%BB%BF%E5%87%BD%E6%95%B0%E7%9A%84%E5%8C%BA%E5%88%AB\"><\/span>3.1.1 Lambda\u548c\u4eff\u51fd\u6570\u7684\u533a\u522b<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<ul>\n<li><strong>lambda \u5c40\u90e8\u5171\u4eab<\/strong>\uff1alambda\u8868\u8fbe\u5f0f\u5728\u5b9a\u4e49\u65f6\u521b\u5efa\uff0c\u6bcf\u4e2alambda\u5b9e\u4f8b\u662f\u72ec\u7acb\u7684<\/li>\n<li><strong>\u4eff\u51fd\u6570\u5168\u5c40\u5171\u4eab<\/strong>\uff1a\u4eff\u51fd\u6570\u5bf9\u8c61\u53ef\u4ee5\u5728\u591a\u4e2a\u5730\u65b9\u590d\u7528\u540c\u4e00\u4e2a\u5b9e\u4f8b<\/li>\n<\/ul>\n<h4><span class=\"ez-toc-section\" id=\"312_Lambda%E6%8D%95%E6%8D%89%E5%88%97%E8%A1%A8\"><\/span>3.1.2 Lambda\u6355\u6349\u5217\u8868<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<ul>\n<li><code>[=]<\/code>\uff1a\u6240\u6709\u6355\u6349\u7684\u53d8\u91cf\u5728lambda\u58f0\u660e\u4e00\u5f00\u59cb\u5c31\u88ab\u62f7\u8d1d<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"32_%E5%BB%BA%E8%AE%AE\"><\/span>3.2 \u5efa\u8bae<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><strong>\u907f\u514d\u4f7f\u7528\u9ed8\u8ba4\u6355\u83b7\u6a21\u5f0f<\/strong><\/li>\n<li><strong>\u9ed8\u8ba4\u6309\u5f15\u7528\u6355\u83b7\u53ef\u80fd\u5bfc\u81f4\u5f15\u7528\u60ac\u6302<\/strong><\/li>\n<li><strong>\u9ed8\u8ba4\u6309\u503c\u6355\u83b7\u5bb9\u6613\u53d7\u91ce\u6307\u9488\u5f71\u54cd<\/strong>\uff0c\u5e76\u4e14\u4f1a\u8bef\u5bfc\u6211\u4eec\uff0c\u8ba4\u4e3alambda\u662f\u81ea\u7ed9\u81ea\u8db3\u7684<\/li>\n<li><strong>\u4f18\u5148\u4f7f\u7528lambda\u800c\u975estd::bind<\/strong><\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"%E7%AC%AC_4_%E7%AB%A0_%E6%99%BA%E8%83%BD%E6%8C%87%E9%92%88\"><\/span>\u7b2c 4 \u7ae0 \u667a\u80fd\u6307\u9488<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"41_%E6%99%BA%E8%83%BD%E6%8C%87%E9%92%88%E6%A6%82%E8%A7%88\"><\/span>4.1 \u667a\u80fd\u6307\u9488\u6982\u89c8<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<table>\n<thead>\n<tr>\n<th>\u6307\u9488\u7c7b\u578b<\/th>\n<th>\u5e94\u7528\u573a\u666f<\/th>\n<th>\u4f18\u70b9<\/th>\n<th>\u7f3a\u70b9<\/th>\n<th>\u5907\u6ce8<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>auto_ptr<\/td>\n<td>\u5df2\u5e9f\u5f03<\/td>\n<td>&#8211;<\/td>\n<td>\u4e0d\u652f\u6301\u62f7\u8d1d\u548c\u8d4b\u503c\uff0c\u5bb9\u6613\u51fa\u73b0\u91ce\u6307\u9488\uff0c\u4e0d\u80fd\u7528\u4e8e\u6570\u7ec4\u548c\u5bb9\u5668\uff0c\u4e0d\u80fd\u8c03\u7528delete[]<\/td>\n<td>C++11\u5df2\u5e9f\u5f03<\/td>\n<\/tr>\n<tr>\n<td>unique_ptr<\/td>\n<td>\u72ec\u4eab\u6307\u9488<\/td>\n<td>\u6027\u80fd\u597d\uff0c\u5f00\u9500\u5c0f<\/td>\n<td>\u4e0d\u652f\u6301\u62f7\u8d1d<\/td>\n<td>1. \u53ef\u7528\u4e8e\u6570\u7ec4\u548c\u5bb9\u5668 2. \u901a\u8fc7move\u5b9e\u73b0\u6240\u6709\u6743\u7684\u8f6c\u79fb<\/td>\n<\/tr>\n<tr>\n<td>shared_ptr<\/td>\n<td>\u5171\u4eab\u6307\u9488<\/td>\n<td>\u81ea\u52a8\u7ba1\u7406\u5f15\u7528\u8ba1\u6570<\/td>\n<td>\u6027\u80fd\u5f00\u9500\u8f83\u5927<\/td>\n<td>\u7ebf\u7a0b\u5b89\u5168\u7684\u5f15\u7528\u8ba1\u6570<\/td>\n<\/tr>\n<tr>\n<td>weak_ptr<\/td>\n<td>\u5f31\u5f15\u7528\u6307\u9488<\/td>\n<td>\u89e3\u51b3\u5faa\u73af\u5f15\u7528\u95ee\u9898<\/td>\n<td>\u4e0d\u80fd\u76f4\u63a5\u8bbf\u95ee\u5bf9\u8c61<\/td>\n<td>\u9700\u8981lock()\u83b7\u53d6shared_ptr<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3><span class=\"ez-toc-section\" id=\"42_shared_ptr_%E7%89%B9%E6%80%A7\"><\/span>4.2 shared_ptr \u7279\u6027<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>std::shared_ptr\u662f\u539f\u751f\u6307\u9488\u7684\u4e24\u500d\u5927\u5c0f\uff0c\u56e0\u4e3a\u5b83\u5305\u542b\u4e00\u4e2a\u6307\u5411\u8d44\u6e90\u7684\u539f\u751f\u6307\u9488\uff0c\u8fd8\u5305\u62ec\u4e00\u4e2a\u6307\u5411\u8d44\u6e90\u63a7\u5236\u5757\u7684\u6307\u9488\uff08\u63a7\u5236\u5757\uff09<\/li>\n<li>\u5f15\u7528\u8ba1\u6570\u7684\u9012\u589e\u6216\u8005\u9012\u51cf\u5fc5\u987b\u662f\u539f\u5b50\u64cd\u4f5c<\/li>\n<li>\u9ed8\u8ba4\u7684deleter\u548callocator\u7684\u63a7\u5236\u5757\u53ea\u67093\u4e2a\u5b57\u8282<\/li>\n<li>\u907f\u514d\u4ece\u539f\u751f\u6307\u9488\u521b\u5efastd::shared_ptr<\/li>\n<li>std::shared_ptr\u548cstd::weak_ptr\u5171\u4eab\u540c\u4e00\u4e2a\u63a7\u5236\u5757<\/li>\n<li>\u5e26\u81ea\u5b9a\u4e49new\u548cdelete\u7684\u7c7b\uff08\u81ea\u5b9a\u4e49\u5185\u5b58\u7ba1\u7406\u7684\u7c7b\uff09\u4e0d\u9002\u5408\u4f7f\u7528std::make_shared<\/li>\n<li>weak_ptr\u4f1a\u5bfc\u81f4std::make_shared\u5bf9\u8c61\u65e0\u6cd5\u91ca\u653e<\/li>\n<\/ul>\n<table>\n<thead>\n<tr>\n<th><\/th>\n<th><\/th>\n<th>\u652f\u6301<\/th>\n<th>\u4f8b\u5b50<\/th>\n<th>\u5907\u6ce8<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\u6784\u9020<\/td>\n<td>shared_ptr()<\/td>\n<td>Y<\/td>\n<td><code>std::shared_ptr&lt;int&gt; p;<\/code><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>shared_ptr(T* p)<\/td>\n<td>Y<\/td>\n<td><code>std::shared_ptr&lt;int&gt; p(new int());<\/code><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>\u6307\u9488\u76f4\u63a5\u8d4b\u503c\u6784\u9020<\/td>\n<td>N<\/td>\n<td><code>std::shared_ptr&lt;int&gt; p = new int();<\/code><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>\u81ea\u5b9a\u4e49\u5220\u9664\u51fd\u6570<\/td>\n<td>Y<\/td>\n<td><code>std::shared_ptr&lt;int&gt; p(new int[10], std::default_delete&lt;int[]&gt;())<\/code><\/td>\n<td>\u652f\u6301\u6570\u7ec4<\/td>\n<\/tr>\n<tr>\n<td>\u62f7\u8d1d\u6784\u9020<\/td>\n<td><\/td>\n<td>Y<\/td>\n<td><code>std::shared_ptr&lt;int&gt; ccp(p);<\/code><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>\u62f7\u8d1d\u8d4b\u503c<\/td>\n<td><\/td>\n<td>Y<\/td>\n<td><code>std::shared_ptr&lt;int&gt; cap = p;<\/code><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>\u79fb\u52a8\u6784\u9020<\/td>\n<td><\/td>\n<td>Y<\/td>\n<td><code>std::shared_ptr&lt;int&gt; mcp(p);<\/code><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>\u79fb\u52a8\u8d4b\u503c<\/td>\n<td><\/td>\n<td>Y<\/td>\n<td><code>std::shared_ptr&lt;int&gt; map(p);<\/code><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>\u4ea4\u6362<\/td>\n<td><\/td>\n<td>Y<\/td>\n<td>swap()<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>\u91cd\u7f6e<\/td>\n<td><\/td>\n<td>Y<\/td>\n<td>reset()<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>\u8fd0\u7b97\u7b26*<\/td>\n<td><\/td>\n<td>Y<\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>\u8fd0\u7b97\u7b26-&gt;<\/td>\n<td><\/td>\n<td>Y<\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>\u83b7\u53d6\u88f8\u6307\u9488<\/td>\n<td><\/td>\n<td>Y<\/td>\n<td>get()<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>\u83b7\u53d6\u5f53\u524d\u5f15\u7528\u8ba1\u6570<\/td>\n<td><\/td>\n<td>Y<\/td>\n<td>use_count()<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>\u7a7a\u667a\u80fd\u6307\u9488<\/td>\n<td><\/td>\n<td>Y<\/td>\n<td><\/td>\n<td>\u5f15\u7528\u8ba1\u6570\u4e3a0<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4><span class=\"ez-toc-section\" id=\"421_shared_ptr_%E6%9E%84%E9%80%A0%E6%96%B9%E5%BC%8F%E5%AF%B9%E6%AF%94\"><\/span>4.2.1 shared_ptr \u6784\u9020\u65b9\u5f0f\u5bf9\u6bd4<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<table>\n<thead>\n<tr>\n<th><\/th>\n<th>\u5185\u5b58\u5206\u914d<\/th>\n<th>\u56fe\u793a<\/th>\n<th>\u4f18\u70b9<\/th>\n<th>\u7f3a\u70b9<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\u6784\u9020\u51fd\u6570<\/td>\n<td>\u4e24\u6b21\u5185\u5b58\u5206\u914d \u5171\u4eab\u4fe1\u606f\u63a7\u5236\u5757 \u5bf9\u8c61\u5185\u5b58<\/td>\n<td><img decoding=\"async\" alt=\"descript\" src=\"https:\/\/www.ixriver.com\/wp-content\/uploads\/2026\/01\/image_8.png\" \/><\/td>\n<td>\u6548\u7387\u4f4e<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>std::make_shared<\/td>\n<td>\u4e00\u6b21\u5185\u5b58\u5206\u914d \u5171\u4eab\u4fe1\u606f\u63a7\u5236\u5757\u548c\u5bf9\u8c61\u5185\u5b58\u653e\u4e00\u8d77<\/td>\n<td><img decoding=\"async\" alt=\"descript\" src=\"https:\/\/www.ixriver.com\/wp-content\/uploads\/2026\/01\/image_9.png\" \/><\/td>\n<td>\u6548\u7387\u9ad8<\/td>\n<td>\u6784\u9020\u51fd\u6570\u4e3a\u4fdd\u62a4\u6216\u8005\u79c1\u6709\u65e0\u6cd5\u4f7f\u7528 \u5bf9\u8c61\u5185\u5b58\u53ef\u80fd\u65e0\u6cd5\u53ca\u65f6\u56de\u6536<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<blockquote>\n<p><strong>\u8bf4\u660e<\/strong>\uff1a<code>std::make_shared<\/code>\u7684\u4f18\u52bf\u662f\u4e00\u6b21\u5185\u5b58\u5206\u914d\uff0c\u5c06\u63a7\u5236\u5757\u548c\u5bf9\u8c61\u5185\u5b58\u653e\u5728\u4e00\u8d77\uff0c\u6548\u7387\u66f4\u9ad8\u3002<\/p>\n<\/blockquote>\n<h3><span class=\"ez-toc-section\" id=\"43_unique_ptr_%E7%89%B9%E6%80%A7\"><\/span>4.3 unique_ptr \u7279\u6027<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>\u57fa\u672c\u7279\u6027\uff1a<\/strong><br \/>\n&#8211; unique_ptr\u662f\u72ec\u5360\u5f0f\u6307\u9488\uff0c\u66ff\u6362auto_ptr<br \/>\n&#8211; \u65e0\u6cd5\u62f7\u8d1d\u8d4b\u503c<br \/>\n&#8211; \u4fdd\u7559\u4e86\u79fb\u52a8\u6784\u9020\u51fd\u6570<br \/>\n&#8211; \u9ed8\u8ba4deleter\u7684std::unique_ptr\u548c\u539f\u751f\u6307\u9488\u540c\u7b49\u5927\u5c0f<br \/>\n&#8211; \u539f\u751f\u6307\u9488\u65e0\u6cd5\u76f4\u63a5\u8d4b\u503c\u7ed9std::unique_ptr<br \/>\n&#8211; deleter\u51fd\u6570\u4f1a\u589e\u52a0std::unique_ptr\u7684\u5927\u5c0f\uff0c\u51fd\u6570\u6307\u9488\u4f1a\u4f7fstd::unique_ptr\u7684\u5927\u5c0f\u589e\u52a0\u4e00\u4e2a\u5230\u4e24\u4e2a\u5b57\u8282\uff0c\u65e0\u72b6\u6001\u7684\u51fd\u6570\u5bf9\u8c61\u4e0d\u4f1a\u5bfc\u81f4\u989d\u5916\u7684\u5927\u5c0f\u5f00\u9500\uff0c\u4f18\u5148\u4f7f\u7528lambda<br \/>\n&#8211; \u5f88\u5bb9\u6613\u5c06\u4e00\u4e2astd::unique_ptr\u8f6c\u6362\u4e3astd::shared_ptr<\/p>\n<table>\n<thead>\n<tr>\n<th><\/th>\n<th><\/th>\n<th>\u652f\u6301<\/th>\n<th>\u4f8b\u5b50<\/th>\n<th>\u5907\u6ce8<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\u6784\u9020<\/td>\n<td>unique_ptr()<\/td>\n<td>Y<\/td>\n<td><code>std::unique_ptr&lt;int&gt; p;<\/code><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>unique_ptr(T* p)<\/td>\n<td>Y<\/td>\n<td><code>std::unique_ptr&lt;int&gt; p(new int());<\/code><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>\u6307\u9488\u76f4\u63a5\u8d4b\u503c\u6784\u9020<\/td>\n<td>N<\/td>\n<td><code>std::unique_ptr&lt;int&gt; p = new int();<\/code><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>\u81ea\u5b9a\u4e49\u5220\u9664\u51fd\u6570<\/td>\n<td>Y<\/td>\n<td><code>struct myDel{ void operator()(int *p) { delete []p; } }; std::unique_ptr&lt;int, myDel&gt; p(new int[10])<\/code><\/td>\n<td>\u652f\u6301\u6570\u7ec4 \u5220\u9664\u51fd\u6570\u53ea\u652f\u6301\u51fd\u6570\u5bf9\u8c61<\/td>\n<\/tr>\n<tr>\n<td>\u62f7\u8d1d\u6784\u9020<\/td>\n<td><\/td>\n<td>N<\/td>\n<td><code>std::shared_ptr&lt;int&gt; ccp(p);<\/code><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>\u62f7\u8d1d\u8d4b\u503c<\/td>\n<td><\/td>\n<td>N<\/td>\n<td><code>std::shared_ptr&lt;int&gt; cap = p;<\/code><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>\u79fb\u52a8\u6784\u9020<\/td>\n<td><\/td>\n<td>Y<\/td>\n<td><code>std::shared_ptr&lt;int&gt; mcp(p);<\/code><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>\u79fb\u52a8\u8d4b\u503c<\/td>\n<td><\/td>\n<td>Y<\/td>\n<td><code>std::shared_ptr&lt;int&gt; map(p);<\/code><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>\u4ea4\u6362<\/td>\n<td><\/td>\n<td>Y<\/td>\n<td>swap()<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>\u91cd\u7f6e<\/td>\n<td><\/td>\n<td>Y<\/td>\n<td>reset()<\/td>\n<td>\u91ca\u653e\u6307\u9488\u5bf9\u8c61<\/td>\n<\/tr>\n<tr>\n<td>\u8fd0\u7b97\u7b26*<\/td>\n<td><\/td>\n<td>Y<\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>\u8fd0\u7b97\u7b26-&gt;<\/td>\n<td><\/td>\n<td>Y<\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>\u83b7\u53d6\u88f8\u6307\u9488<\/td>\n<td><\/td>\n<td>Y<\/td>\n<td>get()<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>\u91ca\u653e\u6240\u6709\u6743<\/td>\n<td><\/td>\n<td>Y<\/td>\n<td>release()<\/td>\n<td>\u91ca\u653e\u5f53\u524d unique_ptr \u6307\u9488\u5bf9\u6240\u6307\u5806\u5185\u5b58\u7684\u6240\u6709\u6743\uff0c\u4f46\u8be5\u5b58\u50a8\u7a7a\u95f4\u5e76\u4e0d\u4f1a\u88ab\u9500\u6bc1<\/td>\n<\/tr>\n<tr>\n<td>\u7a7a\u667a\u80fd\u6307\u9488<\/td>\n<td><\/td>\n<td>Y<\/td>\n<td><\/td>\n<td>\u5f15\u7528\u8ba1\u6570\u4e3a0<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3><span class=\"ez-toc-section\" id=\"44_weak_ptr_%E7%89%B9%E6%80%A7\"><\/span>4.4 weak_ptr \u7279\u6027<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>\u57fa\u672c\u7279\u6027\uff1a<\/strong><br \/>\n&#8211; weak_ptr\u6ca1\u6709\u91cd\u8f7d\u8fd0\u7b97\u7b26*\u548c-&gt;<br \/>\n&#8211; \u53ea\u80fd\u4eceshared_ptr\u8fdb\u884c\u521d\u59cb\u5316<br \/>\n&#8211; <code>lock()<\/code>\u8fd4\u56deshared_ptr\uff0c\u6240\u6307\u5bf9\u8c61\u65e0\u6548\u7684\u65f6\u5019\uff0c\u8fd4\u56de\u7a7a\u503c<br \/>\n&#8211; \u4e0d\u5f71\u54cd\u539f\u6709shared_ptr\u7684\u8ba1\u6570<br \/>\n&#8211; \u81ea\u5b9a\u4e49deleter\u548c\u82b1\u522e\u82b1\u521d\u59cb\u5316\u4e0d\u9002\u7528\u4f7f\u7528std::make_unique<\/p>\n<table>\n<thead>\n<tr>\n<th><\/th>\n<th><\/th>\n<th>\u652f\u6301<\/th>\n<th>\u4f8b\u5b50<\/th>\n<th>\u5907\u6ce8<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\u6784\u9020<\/td>\n<td>unique_ptr()<\/td>\n<td>Y<\/td>\n<td><code>std::weak_ptr&lt;int&gt; p;<\/code><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>unique_ptr(T* p)<\/td>\n<td>N<\/td>\n<td><code>std::weak_ptr&lt;int&gt; p(new int());<\/code><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>unique_ptr(shared_ptr p)<\/td>\n<td>Y<\/td>\n<td><\/td>\n<td>\u652f\u6301\u4eceshared_ptr\u521d\u59cb\u5316<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>\u6307\u9488\u76f4\u63a5\u8d4b\u503c\u6784\u9020<\/td>\n<td>N<\/td>\n<td><code>std::unique_ptr&lt;int&gt; p = new int();<\/code><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>\u62f7\u8d1d\u6784\u9020<\/td>\n<td><\/td>\n<td>Y<\/td>\n<td><code>std::weak_ptr&lt;int&gt; ccp(p);<\/code><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>\u62f7\u8d1d\u8d4b\u503c<\/td>\n<td><\/td>\n<td>&amp;<\/td>\n<td><code>std::weak_ptr&lt;int&gt; cap = p;<\/code><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>\u79fb\u52a8\u6784\u9020<\/td>\n<td><\/td>\n<td>Y<\/td>\n<td><code>std::weak_ptr&lt;int&gt; mcp(p);<\/code><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>\u79fb\u52a8\u8d4b\u503c<\/td>\n<td><\/td>\n<td>Y<\/td>\n<td><code>std::weak_ptr&lt;int&gt; map(p);<\/code><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>\u4ea4\u6362<\/td>\n<td><\/td>\n<td>Y<\/td>\n<td>swap()<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>\u91cd\u7f6e<\/td>\n<td><\/td>\n<td>Y<\/td>\n<td>reset()<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>\u8fd0\u7b97\u7b26*<\/td>\n<td><\/td>\n<td>N<\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>\u8fd0\u7b97\u7b26-&gt;<\/td>\n<td><\/td>\n<td>N<\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td><\/td>\n<td>Y<\/td>\n<td>lock()<\/td>\n<td>\u5982\u679c\u5f53\u524d weak_ptr \u5df2\u7ecf\u8fc7\u671f\uff0c\u5219\u8be5\u51fd\u6570\u4f1a\u8fd4\u56de\u4e00\u4e2a\u7a7a\u7684 shared_ptr \u6307\u9488\uff1b\u53cd\u4e4b\uff0c\u8be5\u51fd\u6570\u8fd4\u56de\u4e00\u4e2a\u548c\u5f53\u524d weak_ptr \u6307\u5411\u76f8\u540c\u7684 shared_ptr \u6307\u9488\u3002<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td><\/td>\n<td>Y<\/td>\n<td>expired()<\/td>\n<td>\u5224\u65ad\u5f53\u524d weak_ptr \u6307\u9488\u4e3a\u5426\u8fc7\u671f\uff08\u6307\u9488\u4e3a\u7a7a\uff0c\u6216\u8005\u6307\u5411\u7684\u5806\u5185\u5b58\u5df2\u7ecf\u88ab\u91ca\u653e\uff09<\/td>\n<\/tr>\n<tr>\n<td>\u7a7a\u667a\u80fd\u6307\u9488<\/td>\n<td><\/td>\n<td>Y<\/td>\n<td><\/td>\n<td>\u5f15\u7528\u8ba1\u6570\u4e3a0<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3><span class=\"ez-toc-section\" id=\"45_shared_ptr%E5%AE%9E%E7%8E%B0%E8%A6%81%E7%82%B9\"><\/span>4.5 shared_ptr\u5b9e\u73b0\u8981\u70b9<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>\u91cd\u8f7d\u8fd0\u7b97\u7b26*\u548c-&gt;<\/li>\n<li>\u5b9e\u73b0\u6784\u9020\u51fd\u6570\uff0c\u865a\u6784\u51fd\u6570\uff0c\u62f7\u8d1d\u6784\u9020\uff0c\u62f7\u8d1d\u8d4b\u503c\uff0c\u79fb\u52a8\u6784\u9020\u548c\u79fb\u52a8\u8d4b\u503c<\/li>\n<li>\u5b9e\u73b0\u83b7\u53d6\u88f8\u6307\u9488\u51fd\u6570\u548c\u5f15\u7528\u8ba1\u6570\u51fd\u6570<\/li>\n<li>\u7a7a\u667a\u80fd\u6307\u9488\u5f15\u7528\u8ba1\u6570\u4e3a0<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"46_%E7%A9%BA%E6%8C%87%E9%92%88%E7%B1%BB%E5%9E%8B\"><\/span>4.6 \u7a7a\u6307\u9488\u7c7b\u578b<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<h4><span class=\"ez-toc-section\" id=\"461_NULL%E6%8C%87%E9%92%88%E7%9A%84%E7%BC%BA%E9%99%B7\"><\/span>4.6.1 NULL\u6307\u9488\u7684\u7f3a\u9677<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<ul>\n<li>C\u8bed\u8a00\u5b9a\u4e49\uff1a<code>(void*) 0<\/code><\/li>\n<li>C++\u5b9a\u4e49\uff1a<code>0<\/code><\/li>\n<li>NULL\u6307\u9488\u88ab\u5b9a\u4e49\u4e3a0<\/li>\n<li>0 \u65e2\u53ef\u4ee5\u662f\u4e00\u4e2a\u6574\u5f62\uff0c\u4e5f\u53ef\u4ee5\u662f\u4e00\u4e2a\u65e0\u7c7b\u578b\u7684\u6307\u9488(void*)<\/li>\n<li>C++\u4e0d\u5141\u8bb8\u76f4\u63a5\u5c06<code>(void*)0<\/code>\u9690\u5f0f\u8f6c\u6362\u5230\u5176\u5b83\u7c7b\u578b<\/li>\n<li>\u91cd\u8f7d\u51fd\u6570\u5b58\u5728\u4e8c\u4e49\u6027<\/li>\n<\/ul>\n<pre><code class=\"language-cpp\">int get(int a);\nint get(int* p);\nget(NULL);  \/\/ \u8c03\u7528\u7684\u662fget(int a)\uff0c\u5b58\u5728\u4e8c\u4e49\u6027\n<\/code><\/pre>\n<h4><span class=\"ez-toc-section\" id=\"462_nullptr_%E6%8C%87%E9%92%88\"><\/span>4.6.2 nullptr \u6307\u9488<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<ul>\n<li><code>nullptr<\/code>\u662f\u6709\u7c7b\u578b\u7684\uff0c\u5b83\u662f\u4e00\u4e2a\u7f16\u8bd1\u5668\u5e38\u91cf\uff0c\u53ef\u4ee5\u88ab\u8f6c\u6362\u6210\u4efb\u4f55\u7c7b\u578b\u7684\u6307\u9488<\/li>\n<li><code>nullptr_t<\/code>\u7c7b\u578b\u7684\u6570\u636e\u4e0d\u80fd\u8f6c\u6362\u4e3a\u975e\u6307\u9488\uff0c\u4e0d\u9002\u7528\u4e8e\u7b97\u672f\u8fd0\u7b97\u8868\u8fbe\u5f0f<\/li>\n<li><code>nullptr_t<\/code>\u7c7b\u578b\u6570\u636e\u53ef\u4ee5\u7528\u4e8e\u5173\u7cfb\u8868\u8fbe\u5f0f\uff0c\u53ea\u80fd\u548c\u540c\u7c7b\u6216\u8005\u6307\u9488\u8fdb\u884c\u6bd4\u8f83<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"%E7%AC%AC_5_%E7%AB%A0_%E5%85%B6%E5%AE%83%E7%89%B9%E6%80%A7\"><\/span>\u7b2c 5 \u7ae0 \u5176\u5b83\u7279\u6027<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"51_%E5%B8%B8%E9%87%8F%E8%A1%A8%E8%BE%BE%E5%BC%8F\"><\/span>5.1 \u5e38\u91cf\u8868\u8fbe\u5f0f<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>\u6240\u6709constexpr\u5bf9\u8c61\u90fd\u662fconst\u5bf9\u8c61\uff0c\u4f46\u4e0d\u662f\u6240\u6709const\u5bf9\u8c61\u90fd\u662fconstexpr<\/li>\n<li>constexpr\u51fd\u6570\uff0c\u4f7f\u7528\u7f16\u8bd1\u671f\u5e38\u91cf\u8c03\u7528\u5b83\uff0cconstexpr\u8fd4\u56de\u7f16\u8bd1\u671f\u5e38\u91cf\uff0c\u4f7f\u7528\u8fd0\u884c\u671f\u53d8\u91cf\u8c03\u7528\u5b83\uff0c\u8fd4\u56de\u8fd0\u884c\u65f6\u7ed3\u679c<\/li>\n<\/ul>\n<p>\u5e38\u91cf\u8868\u8fbe\u5f0f\u662f\u4e00\u79cd\u7f16\u8bd1\u671f\u7684\u5e38\u91cf\u3002<\/p>\n<h4><span class=\"ez-toc-section\" id=\"511_%E5%B8%B8%E9%87%8F%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%87%BD%E6%95%B0\"><\/span>5.1.1 \u5e38\u91cf\u8868\u8fbe\u5f0f\u51fd\u6570<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p><strong>\u89c4\u5219\uff1a<\/strong><br \/>\n&#8211; \u51fd\u6570\u4f53\u53ea\u6709\u5355\u4e00\u7684return\u8bed\u53e5<br \/>\n&#8211; \u51fd\u6570\u5fc5\u987b\u8fd4\u56de\u503c<br \/>\n&#8211; \u5728\u4f7f\u7528\u524d\u5fc5\u987b\u5df2\u6709\u5b9a\u4e49<br \/>\n&#8211; return\u8fd4\u56de\u8bed\u53e5\u5fc5\u987b\u662f\u4e00\u4e2a\u5e38\u91cf\u8868\u8fbe\u5f0f\uff0c\u4e0d\u80fd\u4f7f\u7528\u5168\u5c40\u6570\u636e<\/p>\n<pre><code class=\"language-cpp\">\/\/ \u5b9a\u4e49\nconstexpr int GetConst() { \n    return 1;\n}\n<\/code><\/pre>\n<h4><span class=\"ez-toc-section\" id=\"512_%E5%B8%B8%E9%87%8F%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%80%BC\"><\/span>5.1.2 \u5e38\u91cf\u8868\u8fbe\u5f0f\u503c<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<pre><code class=\"language-cpp\">constexpr int i = 5; \/\/ i\u5982\u679c\u662f\u5168\u5c40\u53d8\u91cf\uff0c\u53ea\u6709\u663e\u5f0f\u4f7f\u7528\uff0c\u624d\u4f1a\u751f\u6210\u5168\u5c40\u6570\u636e\n<\/code><\/pre>\n<h4><span class=\"ez-toc-section\" id=\"513_const_%E4%BA%8C%E4%B9%89%E6%80%A7\"><\/span>5.1.3 const \u4e8c\u4e49\u6027<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<ul>\n<li><code>const<\/code>\u8868\u793a\u53ea\u8bfb\u53d8\u91cf\uff0c\u53ea\u8bfb\u53d8\u91cf\u548c\u662f\u5426\u5141\u8bb8\u4fee\u6539\uff0c\u6ca1\u6709\u5fc5\u7136\u7684\u8054\u7cfb<\/li>\n<li><code>const<\/code>\u8868\u793a\u5e38\u91cf<\/li>\n<li>C++11\uff1a<code>const<\/code>\u53ea\u7528\u4e8e\u8868\u8fbe\u53ea\u8bfb\u53d8\u91cf\uff0c<code>constexpr<\/code>\u8868\u793a\u5e38\u91cf<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"52_for%E5%BE%AA%E7%8E%AF\"><\/span>5.2 for\u5faa\u73af<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u51e0\u79cdfor\u5faa\u73af\u5bf9\u6bd4\uff1a<\/p>\n<pre><code class=\"language-cpp\">\/\/ C++\nvoid Printf(std::vector&lt;std::string&gt;&amp; arr) {\n    for (auto&amp; e : arr) {\n        printf(&quot;%s&quot;, e.c_str());\n    }\n}\n<\/code><\/pre>\n<pre><code class=\"language-objc\">\/\/ Objective-C\n- (void)PrintfArray:(NSArray*) arr {\n    for (id e in arr) {\n       NSLog(@&quot;%@&quot;, e);\n    }\n}\n<\/code><\/pre>\n<pre><code class=\"language-javascript\">\/\/ JavaScript\nconst numbers = [45, 4, 9, 16, 25];\nlet txt = &quot;&quot;;\nfor (let x in numbers) {\n  txt += numbers[x];\n}\n<\/code><\/pre>\n<pre><code class=\"language-swift\">\/\/ Swift\nfor i in 1...5 {\n    print(i)\n}\n<\/code><\/pre>\n<pre><code class=\"language-python\"># Python\nfruits = [&quot;apple&quot;, &quot;banana&quot;, &quot;cherry&quot;]\nfor x in fruits:\n  print(x)\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"53_%E7%B1%BB%E5%9E%8B%E8%BD%AC%E6%8D%A2\"><\/span>5.3 \u7c7b\u578b\u8f6c\u6362<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<table>\n<thead>\n<tr>\n<th>\u7c7b\u578b<\/th>\n<th>\u4f5c\u7528<\/th>\n<th>\u4f7f\u7528\u573a\u666f<\/th>\n<th>\u7f3a\u70b9<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>static_cast<\/td>\n<td>\u666e\u901a\u7c7b\u578b\u8f6c\u6362<\/td>\n<td>\u76f8\u5173\u7c7b\u578b\u8f6c\u6362\uff0c\u7f16\u8bd1\u5668\u4f1a\u81ea\u52a8\u622a\u65ad\u6216\u8865\u9f50\uff1b\u57fa\u672c\u7c7b\u578b\u4e92\u8f6c\uff1bvoid*\u6307\u9488\uff1b\u57fa\u7c7b\u548c\u5b50\u7c7b\u7684\u8f6c\u6362(\u4e0d\u5b89\u5168)<\/td>\n<td>double\u8f6c\u6362\u6307\u9488\uff1bstruct\u8f6c\u6362\u4e3aint<\/td>\n<\/tr>\n<tr>\n<td>const_cast<\/td>\n<td>\u53bb\u9664const\u5c5e\u6027<\/td>\n<td>\u9700\u8981\u4fee\u6539const\u5bf9\u8c61\u65f6<\/td>\n<td>\u9700\u8c28\u614e\u4f7f\u7528<\/td>\n<\/tr>\n<tr>\n<td>dynamic_cast<\/td>\n<td>\u7236\u7c7b\u6307\u9488\u8f6c\u6362\u4e3a\u5b50\u7c7b<\/td>\n<td>\u57fa\u7c7b\u548c\u5b50\u7c7b\u4e92\u8f6c\uff08\u5b89\u5168\uff09<\/td>\n<td>\u8fd0\u884c\u65f6\u5f00\u9500<\/td>\n<\/tr>\n<tr>\n<td>reinterpret_cast<\/td>\n<td>\u8fd0\u884c\u65f6\u8f6c\u6362<\/td>\n<td>\u6307\u9488\u548c\u6574\u6570\u7684\u4e92\u8f6c\uff1b\u4e92\u4e0d\u76f8\u5173\u7c7b\u578b\u8f6c\u6362\uff0c\u6267\u884c\u6309\u4f4d\u62f7\u8d1d<\/td>\n<td>\u4ee3\u7801\u79fb\u690d\u6027\u5dee<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<pre><code class=\"language-cpp\">void dis_1(const int x) {\n    \/\/ \u9519\u8bef\uff0cx\u662f\u53ea\u8bfb\u7684\u53d8\u91cf\n    array&lt;int, x&gt; myarr{1,2,3,4,5};\n    cout &lt;&lt; myarr[1] &lt;&lt; endl;\n}\n\nvoid dis_2() {\n    const int x = 5;\n    array&lt;int, x&gt; myarr{1,2,3,4,5};\n    cout &lt;&lt; myarr[1] &lt;&lt; endl;\n}\n\nint a = 10;\nconst int&amp; con_b = a;\ncout &lt;&lt; con_b &lt;&lt; endl;\na = 20;\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"54_%E9%A1%B6%E5%B1%82const\"><\/span>5.4 \u9876\u5c42const<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><strong>\u9876\u5c42const<\/strong>\uff1a\u8868\u793a\u6307\u9488\u672c\u8eab\u662f\u4e2a\u5e38\u91cf<\/li>\n<li><strong>\u5e95\u5c42const<\/strong>\uff1a\u8868\u793a\u6307\u9488\u6240\u6307\u7684\u5bf9\u8c61\u662f\u4e00\u4e2a\u5e38\u91cf<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"55_std_function\"><\/span>5.5 std::function<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u63d0\u4f9b\u53ef\u8c03\u7528\u5bf9\u8c61\u7684\u7edf\u4e00\u5b9a\u4e49\u65b9\u5f0f\uff0c\u652f\u6301\uff1a<br \/>\n&#8211; \u51fd\u6570\u5bf9\u8c61<br \/>\n&#8211; \u51fd\u6570\u6307\u9488<br \/>\n&#8211; lambda\u8868\u8fbe\u5f0f<\/p>\n<pre><code class=\"language-cpp\">std::function&lt;void(int, int)&gt; a;\n\nvoid func(std::function&lt;int(int, int)&gt; p) {\n    std::cout &lt;&lt; p(3, 4) &lt;&lt; std::endl;\n}\n\nstruct divide {\n    int operator()(int denominator, int divisor) {\n        return denominator - divisor;\n    }\n};\n\ndivide d;\nfunc(d);  \/\/ \u53ef\u4ee5\u7f16\u8bd1\u901a\u8fc7\n\n\/\/ \u5982\u679c\u662f\u4e0b\u9762\u5b9a\u4e49\ntypedef int (*Func)(int, int);\nvoid func(Func p);\n\/\/ \u7f16\u8bd1\u4e0d\u901a\u8fc7\ndivide d;\nfunc(d);  \/\/ \u9519\u8bef\uff1a\u4e0d\u80fd\u5c06divide\u8f6c\u6362\u4e3a\u51fd\u6570\u6307\u9488\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"56_%E6%96%AD%E8%A8%80%E5%92%8C%E5%BC%82%E5%B8%B8\"><\/span>5.6 \u65ad\u8a00\u548c\u5f02\u5e38<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<table>\n<thead>\n<tr>\n<th>\u7c7b\u578b<\/th>\n<th>\u4f5c\u7528<\/th>\n<th>\u5b9e\u73b0\u65b9\u5f0f<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>static_assert<\/td>\n<td>\u9759\u6001\u65ad\u8a00<\/td>\n<td>\u7f16\u8bd1\u671f\u68c0\u67e5\uff0c\u9519\u8bef\u4f1a\u5bfc\u81f4\u7f16\u8bd1\u5668\u62a5\u9519<\/td>\n<\/tr>\n<tr>\n<td>assert<\/td>\n<td>\u8fd0\u884c\u65ad\u8a00<\/td>\n<td>\u8fd0\u884c\u65f6\u68c0\u67e5\uff0c\u5931\u8d25\u4f1a\u7ec8\u6b62\u7a0b\u5e8f<\/td>\n<\/tr>\n<tr>\n<td>noexcept<\/td>\n<td>\u7981\u6b62\u629b\u51fa\u5f02\u5e38<\/td>\n<td>\u5982\u679c\u629b\u51fa\u5f02\u5e38\uff0c\u7a0b\u5e8f\u76f4\u63a5\u8c03\u7528std::terminate()\u7ec8\u6b62<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3><span class=\"ez-toc-section\" id=\"57_%E9%80%9A%E7%94%A8%E5%B1%9E%E6%80%A7\"><\/span>5.7 \u901a\u7528\u5c5e\u6027<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><code>[[noreturn]]<\/code>\uff1a\u51fd\u6570\u4e0d\u4f1a\u8fd4\u56de<\/li>\n<li><code>[[carries_dependency]]<\/code>\uff1a\u5185\u5b58\u6a21\u578b\u76f8\u5173<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"58_%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F\"><\/span>5.8 \u6b63\u5219\u8868\u8fbe\u5f0f<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\uff08\u5f85\u8865\u5145\u5185\u5bb9\uff09<\/p>\n<h3><span class=\"ez-toc-section\" id=\"59_std_bind\"><\/span>5.9 std::bind<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\uff08\u5f85\u8865\u5145\u5185\u5bb9\uff09<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E7%AC%AC_6_%E7%AB%A0_%E5%A4%9A%E7%BA%BF%E7%A8%8B\"><\/span>\u7b2c 6 \u7ae0 \u591a\u7ebf\u7a0b<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"61_std_thread%E7%89%B9%E6%80%A7\"><\/span>6.1 std::thread\u7279\u6027<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>std::thread \u5bf9\u8c61\u9500\u6bc1\u4e4b\u524d\uff0c\u5fc5\u987b\u8c03\u7528join\u6216\u8005detach,  \u5426\u5219\u7a0b\u5e8f\u4f1a\u88abterminate\u3002<\/li>\n<li>join \u548cdetach\u90fd\u53ea\u80fd\u8c03\u7528\u4e00\u6b21\uff0c\u8c03\u7528\u4e4b\u524d\u7528joinable\u5224\u65ad\u662f\u5426\u53ef\u4ee5\u7b49\u5f85<\/li>\n<li>\u7ebf\u7a0bdetach\u4e4b\u540e\uff0cstd::thread\u5bf9\u8c61\u5c31\u65e0\u6548\u4e86<\/li>\n<\/ul>\n<table>\n<thead>\n<tr>\n<th><\/th>\n<th>\u62f7\u8d1d\u6784\u9020<\/th>\n<th>\u62f7\u8d1d\u8d4b\u503c<\/th>\n<th>\u79fb\u52a8\u6784\u9020<\/th>\n<th>\u79fb\u52a8\u8d4b\u503c<\/th>\n<th>detach<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>std::thread<\/td>\n<td>N<\/td>\n<td>N<\/td>\n<td>Y<\/td>\n<td>Y<\/td>\n<td>\u5bf9\u8c61\u65e0\u6548<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3><span class=\"ez-toc-section\" id=\"62_%E9%94%81\"><\/span>6.2 \u9501<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<table>\n<thead>\n<tr>\n<th>\u7c7b\u578b<\/th>\n<th>\u62f7\u8d1d\u6784\u9020<\/th>\n<th>\u79fb\u52a8\u6784\u9020<\/th>\n<th>\u521d\u59cb\u72b6\u6001<\/th>\n<th>\u91cd\u5165<\/th>\n<th>\u6548\u7387<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>mutex<\/td>\n<td>\u4e0d\u5141\u8bb8<\/td>\n<td>\u4e0d\u5141\u8bb8<\/td>\n<td>unlock<\/td>\n<td>deadlock<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>recursive_mutex<\/td>\n<td>\u4e0d\u5141\u8bb8<\/td>\n<td>\u4e0d\u5141\u8bb8<\/td>\n<td>unlock<\/td>\n<td>\u6b63\u5e38<\/td>\n<td>\u903b\u8f91\u590d\u6742\uff0c\u6548\u7387\u4f4e<\/td>\n<\/tr>\n<tr>\n<td>time_mutex<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>time_recurisve_mutex<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>condition_variable<\/td>\n<td><\/td>\n<td><\/td>\n<td>\u53ea\u80fd\u914d\u5408mutex\u5de5\u4f5c<\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>atomic_flag<\/td>\n<td>\u4e0d\u5141\u8bb8<\/td>\n<td>\u4e0d\u5141\u8bb8<\/td>\n<td>\u81ea\u65cb\u9501 \u6700\u5c0f\u7684\u4e14\u4e0d\u53ef\u5e76\u884c\u5316\u7684\u64cd\u4f5c<\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<table>\n<thead>\n<tr>\n<th>\u7c7b\u578b<\/th>\n<th>\u4f18\u70b9<\/th>\n<th>\u7f3a\u70b9<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>lock_guard<\/td>\n<td>\u529f\u80fd\u7b80\u5355<\/td>\n<td>\u6027\u80fd\u548c\u5185\u5b58\u5f00\u9500\u5c0f<\/td>\n<\/tr>\n<tr>\n<td>unique_lock<\/td>\n<td>\u529f\u80fd\u4e30\u5bcc<\/td>\n<td>\u6027\u80fd\u548c\u5185\u5b58\u5f00\u9500\u5230\u5927<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>std::adopt_lock : \u53ea\u83b7\u53d6\u9501\uff0c\u4e0d\u52a0\u9501<br \/>\nstd::defer_lock\uff1a \u5ef6\u8fdf\u52a0\u9501<\/p>\n<h3><span class=\"ez-toc-section\" id=\"63_std_condition_variable\"><\/span>6.3 std::condition_variable<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre><code class=\"language-cpp\">\/\/ std::condition_variable \u8c03\u7528wait\u51fd\u6570\uff0c\u5f53\u7ebf\u7a0bblock\u7684\u65f6\u5019\uff0c\u4f1a\u81ea\u52a8\u91ca\u653e\u9501\n\/\/ \u5f53\u7ebf\u7a0b\u88abnotify\u7684\u65f6\u5019\uff0c\u4f1a\u5c1d\u8bd5\u91cd\u65b0\u83b7\u5f97\u9501\n\/\/ \u5f53\u7ebf\u7a0b\u6ca1\u6709\u5728wait\u7684\u65f6\u5019\uff0cnotify\u8c03\u7528\u662f\u65e0\u6548\u7684\n<\/code><\/pre>\n<pre><code class=\"language-cpp\">wait(locker, pred) {\n    locker.lock();\n    while (pred == null || pred() == false) {\n        block thread;\n        locker.unlock();\n        recv notify;\n        locker.lock();\n        if (pred == null) {\n            break;\n        }\n    }\n}\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"64_%E5%86%85%E5%AD%98%E6%A8%A1%E5%9E%8B\"><\/span>6.4 \u5185\u5b58\u6a21\u578b<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<h4><span class=\"ez-toc-section\" id=\"641_%E9%A1%BA%E5%BA%8F%E4%B8%80%E8%87%B4%E6%80%A7%EF%BC%88C%E5%8E%9F%E5%AD%90%E7%B1%BB%E5%9E%8B%E9%BB%98%E8%AE%A4%E5%86%85%E5%AD%98%E6%A8%A1%E5%9E%8B%EF%BC%89\"><\/span>6.4.1 \u987a\u5e8f\u4e00\u81f4\u6027\uff08C++\u539f\u5b50\u7c7b\u578b\u9ed8\u8ba4\u5185\u5b58\u6a21\u578b\uff09<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<ul>\n<li><code>memory_order_seq_cst<\/code>\uff1a\u5168\u90e8\u5b58\u53d6\u64cd\u4f5c\u90fd\u6309\u987a\u5e8f\u6267\u884c<\/li>\n<li>\u7f16\u8bd1\u5668\u4fdd\u8bc1\u539f\u5b50\u64cd\u4f5c\u7684\u6307\u4ee4\u95f4\u987a\u5e8f\u4e0d\u53d8<\/li>\n<li>\u5904\u7406\u5668\u5bf9\u539f\u5b50\u64cd\u4f5c\u7684\u6c47\u7f16\u6307\u4ee4\u7684\u6267\u884c\u987a\u5e8f\u4e0d\u53d8<\/li>\n<\/ul>\n<h4><span class=\"ez-toc-section\" id=\"642_%E5%86%85%E5%AD%98%E6%A8%A1%E5%9E%8B%E6%9E%9A%E4%B8%BE%E5%80%BC\"><\/span>6.4.2 \u5185\u5b58\u6a21\u578b\u679a\u4e3e\u503c<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<blockquote>\n<p><strong>\u95ee\u9898<\/strong>\uff1a<code>memory_order_relaxed<\/code>\u548c<code>memory_order_consume<\/code>\u6709\u4ec0\u4e48\u533a\u522b\uff1f<\/p>\n<\/blockquote>\n<table>\n<thead>\n<tr>\n<th>\u5185\u5b58\u6a21\u578b<\/th>\n<th>\u679a\u4e3e\u503c<\/th>\n<th>\u7c7b\u578b<\/th>\n<th>\u5b9a\u4e49<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>\u81ea\u7531\u5e8f\u5217<\/td>\n<td>memory_order_relaxed<\/td>\n<td>\u8bfb\u5199<\/td>\n<td>\u4e0d\u5bf9\u6267\u884c\u987a\u5e8f\u505a\u4efb\u4f55\u4fdd\u8bc1<\/td>\n<\/tr>\n<tr>\n<td>\u6392\u5e8f\u4e00\u81f4\u5e8f\u5217<\/td>\n<td>memory_order_seq_cst<\/td>\n<td>\u8bfb\u5199<\/td>\n<td>\u6309\u987a\u5e8f\u6267\u884c\uff08\u9ed8\u8ba4\uff09<\/td>\n<\/tr>\n<tr>\n<td>\u83b7\u53d6-\u91ca\u653e\u5e8f\u5217<\/td>\n<td>memory_order_acq_rel<\/td>\n<td>\u8bfb\u5199<\/td>\n<td>memory_order_release\u548cmemory_order_acquire\u5148\u8bfb\u6216\u5199<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>memory_order_release<\/td>\n<td>\u5199<\/td>\n<td>\u672c\u7ebf\u7a0b\uff0c\u6240\u6709\u5199\u64cd\u4f5c\u5b8c\u6210\u4e4b\u540e\uff0c\u624d\u80fd\u6267\u884c\u672c\u6761\u539f\u5b50\u64cd\u4f5c\uff1b\u672c\u539f\u5b50\u64cd\u4f5c<strong>\u4e4b\u524d<\/strong>\u6240\u6709\u7684\u5199\u539f\u5b50\u64cd\u4f5c\u5fc5\u987b\u5b8c\u6210<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>memory_order_acquire<\/td>\n<td>\u8bfb<\/td>\n<td>\u672c\u7ebf\u7a0b\uff0c\u6240\u6709\u540e\u7eed\u8bfb\u64cd\u4f5c\uff0c\u5fc5\u987b\u5728\u672c\u6761\u539f\u5b50\u64cd\u4f5c\u5b8c\u6210\u4e4b\u540e\u6267\u884c\uff1b\u672c\u539f\u5b50\u64cd\u4f5c\u5fc5\u987b\u5b8c\u6210\u624d\u80fd\u6267\u884c<strong>\u4e4b\u540e<\/strong>\u6240\u6709\u8bfb\u539f\u5b50\u64cd\u4f5c<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>memory_order_consume<\/td>\n<td>\u8bfb\u5199(\u677e\u6563)<\/td>\n<td>\u672c\u7ebf\u7a0b\uff0c\u6240\u6709\u540e\u7eed\u7684\u6709\u5173\u672c\u539f\u5b50\u7c7b\u578b\u7684\u64cd\u4f5c\uff0c\u5fc5\u987b\u5728\u672c\u6761\u539f\u5b50\u64cd\u4f5c\u5b8c\u6210\u4e4b\u540e\u6267\u884c\uff1b\u53ea\u5bf9\u672c\u539f\u5b50\u7c7b\u578b\u7684\u7ea6\u675f\u6709\u6548<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3><span class=\"ez-toc-section\" id=\"65_%E7%BA%BF%E7%A8%8B%E7%9A%84%E5%B1%80%E9%83%A8%E5%AD%98%E5%82%A8\"><\/span>6.5 \u7ebf\u7a0b\u7684\u5c40\u90e8\u5b58\u50a8<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u7ebf\u7a0b\u72ec\u7acb\u4f7f\u7528\u7684\u5168\u5c40\u53d8\u91cf\uff1a<\/p>\n<pre><code class=\"language-cpp\">thread_local int errCode;\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"66_%E7%BB%88%E6%AD%A2%E5%87%BD%E6%95%B0\"><\/span>6.6 \u7ec8\u6b62\u51fd\u6570<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<table>\n<thead>\n<tr>\n<th>\u51fd\u6570\u540d\u79f0<\/th>\n<th>\u51fd\u6570\u7c7b\u578b<\/th>\n<th>\u4f2a\u4ee3\u7801<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>terminate<\/td>\n<td>\u5f02\u5e38\u9000\u51fa<\/td>\n<td>\u8c03\u7528\u6790\u6784\u51fd\u6570 abort()<\/td>\n<\/tr>\n<tr>\n<td>abort<\/td>\n<td>\u5f02\u5e38\u9000\u51fa<\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>exit<\/td>\n<td>\u6b63\u5e38\u9000\u51fa<\/td>\n<td>\u8c03\u7528\u6790\u6784\u51fd\u6570 \u8c03\u7528atexit\u6ce8\u518c\u7684\u51fd\u6570<\/td>\n<\/tr>\n<tr>\n<td>quick_exit<\/td>\n<td>\u6b63\u5e38\u9000\u51fa<\/td>\n<td>\u8c03\u7528at_quick_exit<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3><span class=\"ez-toc-section\" id=\"67_std_ref\"><\/span>6.7 std::ref<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u7528\u4e8e\u53d6\u67d0\u4e2a\u53d8\u91cf\u7684\u5f15\u7528\u3002C++\u672c\u6765\u5c31\u6709\u5f15\u7528\u7684\u5b58\u5728\uff0c\u4e3a\u4ec0\u4e48\u8fd8\u8981\u5f15\u5165<code>std::ref<\/code>\uff1f<\/p>\n<p><code>std::bind<\/code>\u548c<code>std::thread<\/code>\u9ed8\u8ba4\u53c2\u6570\u7684\u4f20\u9012\u65b9\u5f0f\u662f\u503c\u62f7\u8d1d\uff0c\u5982\u679c\u8981\u4f7f\u7528\u5f15\u7528\u4f20\u9012\u503c\uff0c\u5fc5\u987b\u4f7f\u7528<code>std::ref<\/code>\u6765\u8fdb\u884c\u5f15\u7528\u7ed1\u5b9a\u3002<\/p>\n<h3><span class=\"ez-toc-section\" id=\"68_std_future\"><\/span>6.8 std::future<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<table>\n<thead>\n<tr>\n<th><\/th>\n<th>\u63cf\u8ff0<\/th>\n<th>\u5907\u6ce8<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>std::aysnc<\/td>\n<td>\u4e0a\u5c42\u5c01\u88c5<\/td>\n<td>A-&gt;B<\/td>\n<\/tr>\n<tr>\n<td>std::packaged_task<\/td>\n<td>\u4e2d\u95f4\u5c42\u5c01\u88c5<\/td>\n<td>A-&gt;B\uff0c\u4f7f\u7528std::thread<\/td>\n<\/tr>\n<tr>\n<td>std::promise<\/td>\n<td>\u6700\u5e95\u5c42\u5c01\u88c5<\/td>\n<td>A\u2194B, \u53cc\u5411\u901a\u4fe1\uff0c\u4f7f\u7528std::thread<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>\u7ed3\u679c\u83b7\u53d6\uff1a<\/strong><br \/>\n&#8211; <code>get()<\/code>\uff1a\u5176\u5b9e\u5c31\u662fwait\u548cget\u7684\u7ed3\u5408\uff0c\u5982\u679c\u53d1\u751f\u5f02\u5e38\uff0cget\u4f1a\u91cd\u65b0\u89e6\u53d1\u5f02\u5e38\u7684\u4ea7\u751f<\/p>\n<p><strong>\u72b6\u6001\u68c0\u67e5\uff1a<\/strong><br \/>\n&#8211; <code>valid()<\/code>\uff1a\u68c0\u67e5future\u662f\u5426\u62e5\u6709\u5171\u4eab\u72b6\u6001<br \/>\n&#8211; <code>wait()<\/code>\uff1a\u7b49\u5f85\u7ed3\u679c\u53d8\u5f97\u53ef\u7528<br \/>\n&#8211; <code>wait_for()<\/code>\uff1a\u5e26\u8d85\u65f6\u7684\u7b49\u5f85<br \/>\n&#8211; <code>wait_until()<\/code>\uff1a\u5e26\u65f6\u95f4\u70b9\u7684\u7b49\u5f85<\/p>\n<p>\u6709\u6761\u4ef6\u7b49\u5f85\u7ed3\u679c\u662f\u5426\u53ef\u7528\uff0c\u6709<code>ready<\/code>\u3001<code>timeout<\/code>\u3001<code>deferred<\/code>\u4e09\u79cd\u72b6\u6001\u3002<\/p>\n<h3><span class=\"ez-toc-section\" id=\"69_std_async\"><\/span>6.9 std::async<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre><code class=\"language-cpp\">auto fu = std::async([]{\n    LOG(&quot;start task&quot;);\n    std::this_thread::sleep_for(std::chrono::seconds(2));\n    LOG(&quot;end task&quot;);\n    return 1;\n});\nauto status = fu.get();\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"610_std_call_once\"><\/span>6.10 std::call_once<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre><code class=\"language-cpp\">void C11Test::CallOnce() {\n    static std::once_flag flag;\n    std::call_once(flag, []{\n        std::cout &lt;&lt; &quot;execute once&quot; &lt;&lt; std::endl;\n    });\n}\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"611_std_packaged_task\"><\/span>6.11 std::packaged_task<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><code>reset()<\/code>\uff1a\u91cd\u7f6e\u5171\u4eab\u72b6\u6001\u3002<\/p>\n<pre><code class=\"language-cpp\">int CountDown(int from, int to) {\n    return from - to;\n}\n\nvoid C11Test::TestPackageTask() {\n    std::packaged_task&lt;int(int, int)&gt; task(CountDown);\n    auto f = task.get_future();\n    std::thread th{std::move(task), 10, 0};\n    int value = f.get();\n    LOG(&quot;package task result %d&quot;, value);\n    th.join();\n}\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"612_std_promise\"><\/span>6.12 std::promise<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre><code class=\"language-cpp\">void PrintInt(std::future&lt;int&gt;&amp; f) {\n    auto x = f.get();\n    LOG(&quot;get result %d&quot;, x);\n}\n\nvoid C11Test::TestPromise() {\n    std::promise&lt;int&gt; pro;\n    auto f = pro.get_future();\n    std::thread th{PrintInt, std::ref(f)};\n    pro.set_value(10);\n    th.join();\n}\n<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"%E7%AC%AC_7_%E7%AB%A0_%E6%97%B6%E9%92%9F\"><\/span>\u7b2c 7 \u7ae0 \u65f6\u949f<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"71_duration\"><\/span>7.1 duration<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><code>std::chrono::duration<\/code> \u8868\u793a\u4e00\u6bb5\u65f6\u95f4\uff0c<\/p>\n<pre><code class=\"language-cpp\">template &lt;class Rep, class Period = ratio&lt;1&gt; &gt; \nclass duration;\n<\/code><\/pre>\n<ul>\n<li>Rep\u8868\u793a\u4e00\u79cd\u6570\u503c\u7c7b\u578b\uff0c\u7528\u6765\u8868\u793aPeriod\u7684\u6570\u91cf\uff0c\u6bd4\u5982int\u3001float\u3001double<\/li>\n<li>Period\u662fratio\u7c7b\u578b\uff0c\u7528\u6765\u8868\u793a\u3010\u7528\u79d2\u8868\u793a\u7684\u65f6\u95f4\u5355\u4f4d\u3011\u6bd4\u5982second\u3001milisecond<\/li>\n<li>\u5e38\u7528\u7684<code>duration&lt;Rep,Period&gt;<\/code>\u5df2\u7ecf\u5b9a\u4e49\u597d\u4e86\uff0c\u5728<code>std::chrono::duration<\/code>\u4e0b\uff1a<\/li>\n<li><code>ratio&lt;3600, 1&gt;<\/code> hours<\/li>\n<li><code>ratio&lt;60, 1&gt;<\/code> minutes<\/li>\n<li><code>ratio&lt;1, 1&gt;<\/code> seconds<\/li>\n<li><code>ratio&lt;1, 1000&gt;<\/code> microseconds<\/li>\n<li><code>ratio&lt;1, 1000000&gt;<\/code> microseconds<\/li>\n<li><code>ratio&lt;1, 1000000000&gt;<\/code> nanosecons<\/li>\n<\/ul>\n<p>\u8fd9\u91cc\u9700\u8981\u8bf4\u660e\u4e00\u4e0bratio\u8fd9\u4e2a\u7c7b\u6a21\u7248\u7684\u539f\u578b\uff1a<\/p>\n<pre><code class=\"language-cpp\">template &lt;intmax_t N, intmax_t D = 1&gt; \nclass ratio;\n<\/code><\/pre>\n<p>N\u4ee3\u8868\u5206\u5b50\uff0cD\u4ee3\u8868\u5206\u6bcd\uff0c\u6240\u4ee5ratio\u8868\u793a\u4e00\u4e2a\u5206\u6570\u503c\u3002<br \/>\n\u6ce8\u610f\uff0c\u6211\u4eec\u81ea\u5df1\u53ef\u4ee5\u5b9a\u4e49Period\uff0c\u6bd4\u5982<code>ratio&lt;1, -2&gt;<\/code>\u8868\u793a\u5355\u4f4d\u65f6\u95f4\u662f-0.5\u79d2\u3002\u7531\u4e8e\u5404\u79cdduration\u8868\u793a\u4e0d\u540c\uff0cchrono\u5e93\u63d0\u4f9b\u4e86duration_cast\u7c7b\u578b\u8f6c\u6362\u51fd\u6570<\/p>\n<pre><code class=\"language-cpp\">template &lt;class ToDuration, class Rep, class Period&gt; \nconstexpr ToDuration duration_cast(const duration&lt;Rep,Period&gt;&amp; dtn);\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"72_time_point\"><\/span>7.2 time_point<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre><code class=\"language-cpp\">template &lt;class _Clock, class _Duration = typename _Clock::duration&gt;\nclass _LIBCPP_TEMPLATE_VIS time_point;\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"73_Clocks\"><\/span>7.3 Clocks<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><code>system_clock<\/code>\uff1a\u7cfb\u7edf\u65f6\u949f\uff0c\u53ef\u80fd\u88ab\u8c03\u6574<\/li>\n<li><code>steady_clock<\/code>\uff1a\u5355\u8c03\u65f6\u949f\uff0c\u4e0d\u4f1a\u88ab\u8c03\u6574<\/li>\n<li><code>high_resolution_clock<\/code>\uff1a<code>system_clock<\/code>\u6216\u8005<code>steady_clock<\/code>\u7684\u522b\u540d\uff0c\u63d0\u4f9b\u6700\u9ad8\u7cbe\u5ea6\u7684\u65f6\u949f<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"%E7%AC%AC_8_%E7%AB%A0_%E6%A8%A1%E6%9D%BF\"><\/span>\u7b2c 8 \u7ae0 \u6a21\u677f<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li>\u6a21\u677f\u51fd\u6570\u7684\u9ed8\u8ba4\u6a21\u677f\u53c2\u6570<\/li>\n<li>\u5916\u90e8\u6a21\u677f<\/li>\n<li>\u5141\u8bb8\u5c40\u90e8\u548c\u533f\u540d\u7c7b\u578b\u4f5c\u4e3a\u6a21\u677f\u5b9e\u53c2<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"81_%E5%8F%98%E9%95%BF%E6%A8%A1%E6%9D%BF\"><\/span>8.1 \u53d8\u957f\u6a21\u677f<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>\u53d8\u957f\u6a21\u677f\u7c7b\uff1a<\/strong> \u6a21\u677f\u53c2\u6570\u5305<\/p>\n<pre><code class=\"language-cpp\">\/\/ \u6a21\u677f\u53c2\u6570\u5305\uff0c\u591a\u4e2a\u6a21\u677f\u53c2\u6570\u6253\u5305\u6210\u5355\u4e2a\u6a21\u677f\u53c2\u6570\u5305Elements\ntemplate&lt;typename... Elements&gt; class tuple;\ntemplate&lt;int... A&gt; class NonType;\n\n\/\/ \u89e3\u5305\uff0cC++11\u901a\u8fc7\u4e00\u4e2a\u540d\u4e3a\u5305\u6269\u5c55\u7684\u8868\u8fbe\u5f0f\u5b8c\u6210\ntemplate&lt;typename... A&gt; class TDemo : private B&lt;A...&gt; {}\n<\/code><\/pre>\n<p><strong>\u53d8\u957f\u6a21\u677f\u51fd\u6570\uff1a<\/strong> \u6a21\u677f\u53c2\u6570\u5305\u548c\u51fd\u6570\u53c2\u6570\u5305<\/p>\n<h4><span class=\"ez-toc-section\" id=\"811_%E6%A8%A1%E6%9D%BF%E5%8F%82%E6%95%B0%E5%8C%85\"><\/span>8.1.1 \u6a21\u677f\u53c2\u6570\u5305<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u6a21\u677f\u53c2\u6570\u5305\u662f\u6a21\u677f\u7c7b\u6216\u8005\u6a21\u677f\u51fd\u6570\u7684\u6700\u540e\u4e00\u4e2a\u53c2\u6570<\/p>\n<pre><code class=\"language-cpp\">template&lt;typename... A&gt;\n<\/code><\/pre>\n<h4><span class=\"ez-toc-section\" id=\"812_%E5%8C%85%E6%89%A9%E5%B1%95\"><\/span>8.1.2 \u5305\u6269\u5c55<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<pre><code class=\"language-cpp\">template&lt;typename Head, typename... Tail&gt;\nclass Tuple&lt;Head, Tail...&gt; : private Tuple&lt;Tail...&gt; {\n    Head head;\n};\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"82_%E6%A8%A1%E6%9D%BF%E5%88%AB%E5%90%8Dusing\"><\/span>8.2 \u6a21\u677f\u522b\u540dusing<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre><code class=\"language-cpp\">using namespace std; \/\/ \u58f0\u660e\u4f7f\u7528\u547d\u540d\u7a7a\u95f4\n\ntypedef void (*tFunc)(void);\nusing uFunc = void(*)(void); \/\/ \u7c7b\u578b\u5b9a\u4e49\n<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"%E7%AC%AC_9_%E7%AB%A0_Unicode\"><\/span>\u7b2c 9 \u7ae0 Unicode<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Unicode\u7801\u4f4d\u4ece0\u523010FFFF\uff0c\u603b\u51711114112\u4e2a\uff0c\u5e38\u89c1\u7684\u7f16\u7801\u65b9\u5f0f\u6709UTF8\u3001UTF16\u3001UTF32\u3002Windows\u5185\u90e8\u91c7\u7528UTF-16\uff0cmacOS\u3001Linux\u91c7\u7528UTF-8\u7f16\u7801\u65b9\u5f0f\u3002<\/p>\n<ul>\n<li>UTF-8\u603b\u5171\u75281~4\u4e2a\u5b57\u8282\u7684\u53d8\u957f\u7f16\u7801\u65b9\u5f0f\u7f16\u7801unicode\uff0c\u82f1\u6587\u75281\u4e2a\u5b57\u8282\u8868\u793a\uff0c\u4e2d\u6587\u75283\u4e2a\u5b57\u8282\u8868\u793a<\/li>\n<li>UTF-16\u4f7f\u75282\u4e2a\u6216\u80054\u4e2a\u5b57\u8282\u7684\u7f16\u7801\u65b9\u5f0f<\/li>\n<li>UTF-32\u4f7f\u75284\u4e2a\u5b57\u8282\u7684\u7f16\u7801\u65b9\u5f0f<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"91_C11%E4%B8%AD%E7%9A%84Unicode%E6%94%AF%E6%8C%81\"><\/span>9.1 C++11\u4e2d\u7684Unicode\u652f\u6301<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><code>wchar_t<\/code>\uff1aWindows\u5b9e\u73b0\u4e3a16\u4f4d<\/li>\n<li>C++11\u89c4\u5b9a\u7528UTF-16\u7801\u4f4d\u6765\u6807\u8bc6\u4e00\u4e2aunicode\u5b57\u7b26<\/li>\n<li><code>char16_t<\/code>\uff1a\u7528\u4e8e\u5b58\u50a8UTF-16\u7f16\u7801\u7684unicode\u6570\u636e<\/li>\n<li><code>char32_t<\/code>\uff1a\u7528\u4e8e\u5b58\u50a8UTF-32\u7f16\u7801\u7684unicode\u6570\u636e<\/li>\n<\/ul>\n<p><strong>3\u79cd\u524d\u7f00\uff1a<\/strong><br \/>\n&#8211; <code>u8<\/code>\uff1a\u8868\u793aUTF-8\u7f16\u7801<br \/>\n&#8211; <code>u<\/code>\uff1a\u8868\u793aUTF-16\u7f16\u7801<br \/>\n&#8211; <code>U<\/code>\uff1a\u8868\u793aUTF-32\u7f16\u7801<br \/>\n&#8211; \u5bbd\u5b57\u7b26<code>wchar_t<\/code>\u524d\u7f00<code>L<\/code><\/p>\n<p><strong>\u5f71\u54cdUnicode\u7684\u56e0\u7d20\uff1a<\/strong><br \/>\n&#8211; \u4ee3\u7801\u7f16\u8f91\u5668<br \/>\n&#8211; \u7f16\u8bd1\u5668<br \/>\n&#8211; \u8f93\u51fa\u73af\u5883<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%E7%AC%AC_10_%E7%AB%A0_%E8%B0%83%E8%AF%95%E5%B7%A5%E5%85%B7\"><\/span>\u7b2c 10 \u7ae0 \u8c03\u8bd5\u5de5\u5177<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"101_%E7%AC%A6%E5%8F%B7%E6%9F%A5%E7%9C%8B%E5%B7%A5%E5%85%B7\"><\/span>10.1 \u7b26\u53f7\u67e5\u770b\u5de5\u5177<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>\n<p><strong>nm<\/strong>\uff1a\u67e5\u770b\u76ee\u6807\u6587\u4ef6\u4e2d\u7684\u7b26\u53f7<br \/>\n  <code>bash<br \/>\n  nm *.o *.exe<\/code><\/p>\n<\/li>\n<li>\n<p><strong>c++filt<\/strong>\uff1a\u89e3\u6790C++\u7b26\u53f7\u540d\u79f0\uff08demangle\uff09<br \/>\n  <code>bash<br \/>\n  c++filt _ZTIN15ilive_noble_svr18QueryNobleLevelReqE<\/code><\/p>\n<\/li>\n<\/ul>\n<h1><span class=\"ez-toc-section\" id=\"%E7%AC%AC%E4%B8%89%E9%83%A8%E5%88%86_C14\"><\/span>\u7b2c\u4e09\u90e8\u5206 C++14<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<h2><span class=\"ez-toc-section\" id=\"%E7%AC%AC_1_%E7%AB%A0_C14%E6%96%B0%E7%89%B9%E6%80%A7\"><\/span>\u7b2c 1 \u7ae0 C++14\u65b0\u7279\u6027<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"11_%E5%87%BD%E6%95%B0%E8%BF%94%E5%9B%9E%E5%80%BC%E7%B1%BB%E5%9E%8B%E6%8E%A8%E5%AF%BC%E4%BC%98%E5%8C%96\"><\/span>1.1 \u51fd\u6570\u8fd4\u56de\u503c\u7c7b\u578b\u63a8\u5bfc\u4f18\u5316<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre><code class=\"language-cpp\">\/\/ C++11\ntemplate &lt;typename T1, typename T2&gt;\nauto CustomeAdd11(T1 t1, T2 t2) -&gt; decltype(t1+t2) {\n    return t1 + t2;\n}\n\n\/\/ C++14\ntemplate &lt;typename T1, typename T2&gt;\nauto CustomeAdd(T1 t1, T2 t2) {\n    return t1 + t2;\n}\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"12_Lambda%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%8F%AF%E4%BB%A5auto%E5%8F%82%E6%95%B0%E5%92%8C%E8%BF%94%E5%9B%9E%E5%80%BC\"><\/span>1.2 Lambda\u8868\u8fbe\u5f0f\u53ef\u4ee5auto\u53c2\u6570\u548c\u8fd4\u56de\u503c<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre><code class=\"language-cpp\">auto la = [](auto a, auto b) {\n    return a + b;\n};\nauto sum2 = la(10, 16.5);\nLOG(&quot;add lambda %.2f&quot;, sum2);\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"13_%E5%8F%98%E9%87%8F%E6%A8%A1%E6%9D%BF\"><\/span>1.3 \u53d8\u91cf\u6a21\u677f<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre><code class=\"language-cpp\">template&lt;class T&gt;\nconstexpr T pi = T(3.1415926535897932385L);\n\nint main() {\n    cout &lt;&lt; pi&lt;int&gt; &lt;&lt; endl;    \/\/ 3\n    cout &lt;&lt; pi&lt;double&gt; &lt;&lt; endl; \/\/ 3.14159\n    return 0;\n}\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"14_%E5%88%AB%E5%90%8D%E6%A8%A1%E6%9D%BF\"><\/span>1.4 \u522b\u540d\u6a21\u677f<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre><code class=\"language-cpp\">template&lt;typename T, typename U&gt;\nstruct A {\n    T t;\n    U u;\n};\n\ntemplate&lt;typename T&gt;\nusing B = A&lt;T, int&gt;;\n\nint main() {\n    B&lt;double&gt; b;\n    b.t = 10;\n    b.u = 20;\n    cout &lt;&lt; b.t &lt;&lt; endl;\n    cout &lt;&lt; b.u &lt;&lt; endl;\n    return 0;\n}\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"15_%E5%85%B6%E5%AE%83%E7%89%B9%E6%80%A7\"><\/span>1.5 \u5176\u5b83\u7279\u6027<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><code>std::make_unique<\/code><\/li>\n<li><code>std::shared_timed_mutex<\/code>\u4e0e<code>std::shared_lock<\/code><\/li>\n<li><code>std::exchange<\/code><\/li>\n<li><code>std::quoted<\/code>\uff1a\u7ed9\u5b57\u7b26\u4e32\u6dfb\u52a0\u5f15\u53f7<\/li>\n<li><code>[[deprecated]]<\/code>\u6807\u8bb0\uff1a\u6807\u8bb0\u5df2\u5e9f\u5f03\u7684\u4ee3\u7801<\/li>\n<\/ul>\n<h1><span class=\"ez-toc-section\" id=\"%E7%AC%AC%E5%9B%9B%E9%83%A8%E5%88%86_C17\"><\/span>\u7b2c\u56db\u90e8\u5206 C++17<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<h2><span class=\"ez-toc-section\" id=\"%E7%AC%AC_1%E7%AB%A0_%E6%96%B0%E5%A2%9E%E7%89%B9%E6%80%A7\"><\/span>\u7b2c 1\u7ae0 \u65b0\u589e\u7279\u6027<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"11_%E6%9E%84%E9%80%A0%E5%87%BD%E6%95%B0%E6%A8%A1%E6%9D%BF%E6%8E%A8%E5%AF%BC\"><\/span>1.1 \u6784\u9020\u51fd\u6570\u6a21\u677f\u63a8\u5bfc<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre><code class=\"language-cpp\">\/\/ before C++17\npair&lt;int, double&gt; p(1, 2.2);\n\n\/\/ C++17 \u81ea\u52a8\u63a8\u5bfc\npair p(1, 2.2);\nvector v = {1, 2, 3};\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"12_%E7%BB%93%E6%9E%84%E5%8C%96%E7%BB%91%E5%AE%9A\"><\/span>1.2 \u7ed3\u6784\u5316\u7ed1\u5b9a<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u53ef\u4ee5\u7ed1\u5b9atuple\u3001map\u3001\u6570\u7ec4\u3001\u7ed3\u6784\u4f53\uff1a<\/p>\n<pre><code class=\"language-cpp\">std::tuple&lt;int, double&gt; func() {\n    return std::tuple(1, 2.2);\n}\n\nauto [i, d] = func();\nauto&amp; [i, d] = func();\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"13_if-switch%E8%AF%AD%E5%8F%A5%E5%85%81%E8%AE%B8%E5%88%9D%E5%A7%8B%E5%8C%96\"><\/span>1.3 if-switch\u8bed\u53e5\u5141\u8bb8\u521d\u59cb\u5316<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre><code class=\"language-cpp\">if (int a = GetValue(); a &lt; 101) {\n    cout &lt;&lt; a;\n}\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"14_%E5%86%85%E8%81%94%E5%8F%98%E9%87%8F\"><\/span>1.4 \u5185\u8054\u53d8\u91cf<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre><code class=\"language-cpp\">\/\/ header file\nstruct A {\n    static const int value;\n};\ninline int const A::value = 10;\n\n\/\/ ==========\u6216\u8005========\nstruct A {\n    inline static const int value = 10;\n};\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"15_%E6%8A%98%E5%8F%A0%E8%A1%A8%E8%BE%BE%E5%BC%8F\"><\/span>1.5 \u6298\u53e0\u8868\u8fbe\u5f0f<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre><code class=\"language-cpp\">template &lt;typename ... Ts&gt;\nauto sum(Ts ... ts) {\n    return (ts + ...);\n}\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"16_namespace%E5%B5%8C%E5%A5%97\"><\/span>1.6 namespace\u5d4c\u5957<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre><code class=\"language-cpp\">namespace A {\n    namespace B {\n        namespace C {\n            void func();\n        }\n    }\n}\n\n\/\/ C++17\uff0c\u66f4\u65b9\u4fbf\u66f4\u8212\u9002\nnamespace A::B::C {\n    void func();\n}\n<\/code><\/pre>\n<h3><span class=\"ez-toc-section\" id=\"17_%E5%85%B6%E5%AE%83%E7%89%B9%E6%80%A7\"><\/span>1.7 \u5176\u5b83\u7279\u6027<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li>Lambda\u8868\u8fbe\u5f0f\u6355\u83b7<code>*this<\/code>\u5bf9\u8c61<\/li>\n<li>\u5b57\u7b26\u4e32\u8f6c\u6362\u5de5\u5177<\/li>\n<li><code>std::variant<\/code>\uff1a\u7c7b\u4f3cunion\u529f\u80fd<\/li>\n<li><code>std::optional<\/code>\uff1a\u53ef\u9009\u503c\u7c7b\u578b<\/li>\n<li><code>std::any<\/code>\uff1a\u53ef\u4ee5\u5b58\u50a8\u4efb\u4f55\u7c7b\u578b<\/li>\n<li><code>std::apply<\/code>\uff1a\u5c55\u5f00tuple\u4f5c\u4e3a\u51fd\u6570\u53c2\u6570<\/li>\n<li><code>std::make_from_tuple<\/code>\uff1atuple\u5c55\u5f00\u4f5c\u4e3a\u6784\u9020\u51fd\u6570\u53c2\u6570<\/li>\n<li><code>std::string_view<\/code>\uff1a\u5b57\u7b26\u4e32\u89c6\u56fe<\/li>\n<\/ul>\n<h1><span class=\"ez-toc-section\" id=\"%E7%AC%AC%E4%BA%94%E9%83%A8%E5%88%86_C20\"><\/span>\u7b2c\u4e94\u90e8\u5206 C++20<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<h2><span class=\"ez-toc-section\" id=\"%E7%AC%AC_1%E7%AB%A0_%E6%96%B0%E5%A2%9E%E7%89%B9%E6%80%A7-2\"><\/span>\u7b2c 1\u7ae0 \u65b0\u589e\u7279\u6027<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li><strong>\u6a21\u5757\uff08Modules\uff09<\/strong>\uff1a\u521b\u5efa\u6a21\u5757<\/li>\n<li><strong>\u534f\u7a0b\uff08Coroutines\uff09<\/strong>\uff1a\u5f02\u6b65\u7f16\u7a0b\u652f\u6301<\/li>\n<li><strong><code>std::format<\/code><\/strong>\uff1a\u683c\u5f0f\u5316\u5b57\u7b26\u4e32<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>\u7b2c\u4e00\u90e8\u5206 C++98 \u7b2c 1 \u7ae0 \u6307\u5357 1.1 \u7f16\u7801\u89c4\u8303 \u6587\u4ef6\u540d\uff1a\u5c0f\u5199\u5b57\u6bcd\u5f00\u5934\uff0c\u4e0b\u5212\u7ebf \u7c7b\uff1a\u5927\u5199\u5b57\u6bcd\u5f00\u5934\uff0c\u9a7c\u5cf0 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"blocksy_meta":[],"featured_image_urls":{"full":"","thumbnail":"","medium":"","medium_large":"","large":"","1536x1536":"","2048x2048":""},"post_excerpt_stackable":"<p>\u76ee\u5f55 Toggle \u7b2c\u4e00\u90e8\u5206 C++98\u7b2c 1 \u7ae0 \u6307\u53571.1 \u7f16\u7801\u89c4\u83031.2 \u7f16\u7a0b\u6307\u5bfc\u5c06\u6587\u4ef6\u95f4\u7684\u7f16\u8bd1\u4f9d\u8d56\u6027\u964d\u81f3\u6700\u4f4e\u7b2c 2 \u7ae0 \u7c7b2.1 C++ \u5bf9\u8c61\u7684\u5185\u5b58\u5e03\u5c402.1.1 \u5927\u5c0f\u548c\u5e03\u5c402.2 \u5355\u91cd\u7ee7\u627f2&hellip;<\/p>\n","category_list":"<a href=\"https:\/\/www.ai.ixriver.com\/?cat=2\" rel=\"category\">C++<\/a>","author_info":{"name":"admin","url":"https:\/\/www.ai.ixriver.com\/?author=1"},"comments_num":"0 comments","_links":{"self":[{"href":"https:\/\/www.ai.ixriver.com\/index.php?rest_route=\/wp\/v2\/posts\/814"}],"collection":[{"href":"https:\/\/www.ai.ixriver.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ai.ixriver.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ai.ixriver.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ai.ixriver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=814"}],"version-history":[{"count":0,"href":"https:\/\/www.ai.ixriver.com\/index.php?rest_route=\/wp\/v2\/posts\/814\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.ai.ixriver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=814"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ai.ixriver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=814"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ai.ixriver.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=814"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}