{"id":422,"date":"2023-02-25T11:39:54","date_gmt":"2023-02-25T03:39:54","guid":{"rendered":"https:\/\/www.appblog.cn\/?p=422"},"modified":"2023-04-29T21:25:31","modified_gmt":"2023-04-29T13:25:31","slug":"android-ndk-basic-cpp-exception-handling-template-function-stl-standard-template-library","status":"publish","type":"post","link":"https:\/\/www.appblog.cn\/index.php\/2023\/02\/25\/android-ndk-basic-cpp-exception-handling-template-function-stl-standard-template-library\/","title":{"rendered":"Android NDK\u57fa\u784022\uff1aC++_\u5f02\u5e38\u5904\u7406_\u6a21\u677f\u51fd\u6570_STL\u6807\u51c6\u6a21\u677f\u5e93"},"content":{"rendered":"<h2>C++\u5f02\u5e38\u5904\u7406<\/h2>\n<pre><code class=\"language-cpp\">\/\/C++ \u5f02\u5e38\u5904\u7406\uff0c\u6839\u636e\u629b\u51fa\u7684\u5f02\u5e38\u6570\u636e\u7c7b\u578b\uff0c\u8fdb\u5165\u5230\u76f8\u5e94\u7684catch\u5757\u4e2d\nvoid main() {\n    try {\n        int age = 300;\n        if (age &gt; 200) {\n            throw 9.8;\n        }\n    }\n    catch (int a) {\n        cout &lt;&lt; &quot;int\u5f02\u5e38&quot; &lt;&lt; endl;\n    }\n    catch (char* b) {\n        cout &lt;&lt; b &lt;&lt; endl;\n    }\n    catch (...) {\n        cout &lt;&lt; &quot;\u672a\u77e5\u5f02\u5e38&quot; &lt;&lt; endl;\n    }\n    system(&quot;pause&quot;);\n}<\/code><\/pre>\n<p><!-- more --><\/p>\n<h3>throw \u629b\u51fa<\/h3>\n<pre><code class=\"language-cpp\">\/\/throw \u629b\u51fa\u51fd\u6570\u5916\nvoid div(int a, int b) {\n    if (b == 0) {\n        throw &quot;\u9664\u6570\u4e3a\u96f6&quot;;\n    }\n}\n\nvoid func() {\n    try {\n        div(8, 0);\n    }\n    catch (char* a) {\n        throw a;\n    }\n}\n\nvoid main() {\n    try {\n        func();\n    }\n    catch (char* a) {\n        cout &lt;&lt; a &lt;&lt; endl;\n    }\n    system(&quot;pause&quot;);\n}<\/code><\/pre>\n<h3>\u629b\u51fa\u5bf9\u8c61<\/h3>\n<pre><code class=\"language-cpp\">\/\/\u629b\u51fa\u5bf9\u8c61\n\/\/\u5f02\u5e38\u7c7b\nclass MyException {\n\n};\n\nvoid div(int a, int b) {\n    if (b == 0) {\n        throw MyException();\n        \/\/throw new MyException; \/\/\u4e0d\u8981\u629b\u51fa\u5f02\u5e38\u6307\u9488        \n    }\n}\n\nvoid main() {\n    try {\n        div(8,0);\n    }\n    catch (MyException&amp; e) {\n        cout &lt;&lt; &quot;MyException\u5f15\u7528&quot; &lt;&lt; endl;\n    }\n    \/\/\u4f1a\u4ea7\u751f\u5bf9\u8c61\u7684\u526f\u672c\n    \/\/catch (MyException e) {\n    \/\/    cout &lt;&lt; &quot;MyException&quot; &lt;&lt; endl;\n    \/\/}\n    catch (MyException* e){\n        cout &lt;&lt; &quot;MyException\u6307\u9488&quot; &lt;&lt; endl;        \n        delete e;\n    }\n\n    system(&quot;pause&quot;);\n}<\/code><\/pre>\n<h3>throw \u58f0\u660e\u51fd\u6570\u4f1a\u629b\u51fa\u7684\u5f02\u5e38\u7c7b\u578b<\/h3>\n<pre><code class=\"language-cpp\">\/\/throw \u58f0\u660e\u51fd\u6570\u4f1a\u629b\u51fa\u7684\u5f02\u5e38\u7c7b\u578b\nvoid div(int a, int b) throw (char*, int) {\n    if (b == 0) {\n        throw &quot;\u9664\u6570\u4e3a\u96f6&quot;;    \n    }\n}<\/code><\/pre>\n<h3>\u6807\u51c6\u5f02\u5e38<\/h3>\n<pre><code class=\"language-cpp\">#include &lt;stdexcept&gt;\n\n\/\/\u6807\u51c6\u5f02\u5e38\uff08\u7c7b\u4f3c\u4e8eJavaNullPointerException\uff09\nclass NullPointerException : public exception {\npublic:\n    NullPointerException(char* msg) : exception(msg) {\n\n    }\n};\n\nvoid div(int a, int b) {\n    if (b &gt; 10) {\n        throw out_of_range(&quot;\u8d85\u51fa\u8303\u56f4&quot;);        \n    }    \n    else if (b == NULL) {\n        throw NullPointerException(&quot;\u4e3a\u7a7a&quot;);\n    }\n    else if (b == 0) {\n        throw invalid_argument(&quot;\u53c2\u6570\u4e0d\u5408\u6cd5&quot;);\n    }\n}\n\nvoid main() {\n    try {\n        div(8, NULL);\n    }\n    catch (out_of_range e1) {\n        cout &lt;&lt; e1.what() &lt;&lt; endl;\n    }\n    catch (NullPointerException&amp; e2) {\n        cout &lt;&lt; e2.what() &lt;&lt; endl;\n    }\n    catch (...) {\n\n    }\n\n    system(&quot;pause&quot;);\n}<\/code><\/pre>\n<h3>\u5916\u90e8\u7c7b\u5f02\u5e38<\/h3>\n<pre><code class=\"language-cpp\">\/\/\u5916\u90e8\u7c7b\u5f02\u5e38\nclass Err {\npublic:\n    class MyException {\n        public: MyException() {\n\n        }\n    };\n};\n\nvoid div(int a, int b) {\n    if (b &gt; 10) {\n        throw Err::MyException();\n    }\n}<\/code><\/pre>\n<h2>\u6a21\u677f\u51fd\u6570\uff08\u6cdb\u578b\uff09<\/h2>\n<pre><code class=\"language-cpp\">\/\/\u6a21\u677f\u51fd\u6570\uff08\u6cdb\u578b\uff09\nvoid myswap(int&amp; a, int&amp; b) {\n    int tmp = 0;\n    tmp = a;\n    a = b;\n    b = tmp;\n}\n\nvoid myswap(char&amp; a, char&amp; b) {\n    char tmp = 0;\n    tmp = a;\n    a = b;\n    b = tmp;\n}<\/code><\/pre>\n<pre><code class=\"language-cpp\">\/\/\u53d1\u73b0\uff1a\u8fd9\u4e24\u4e2a\u51fd\u6570\u4e1a\u52a1\u903b\u8f91\u4e00\u6837\uff0c\u6570\u636e\u7c7b\u578b\u4e0d\u4e00\u6837\ntemplate &lt;typename T&gt;\nvoid myswap(T&amp; a, T&amp; b) {\n    T tmp = 0;\n    tmp = a;\n    a = b;\n    b = tmp;\n}\n\nvoid main() {\n    \/\/\u6839\u636e\u5b9e\u9645\u7c7b\u578b\uff0c\u81ea\u52a8\u63a8\u5bfc\n    int a = 10, b = 20;\n    myswap&lt;int&gt;(a, b);\n    cout &lt;&lt; a &lt;&lt; &quot;, &quot; &lt;&lt; b &lt;&lt; endl;\n\n    char x = &#039;v&#039;, y = &#039;w&#039;;\n    myswap(x, y);\n    cout &lt;&lt; x &lt;&lt; &quot;, &quot; &lt;&lt; y &lt;&lt; endl;\n\n    system(&quot;pause&quot;);\n}<\/code><\/pre>\n<h2>\u6a21\u677f\u7c7b<\/h2>\n<pre><code class=\"language-cpp\">\/\/\u6a21\u677f\u7c7b\ntemplate&lt;class T&gt;\nclass A {\npublic:\n    A(T a) {\n        this-a = a;\n    }\nprotected:\n    T a;\n};\n\n\/\/\u666e\u901a\u7c7b\u7ee7\u627f\u6a21\u677f\u7c7b\nclass B : public A&lt;int&gt; {\npublic:\n    B(int a, int b) : A&lt;int&gt;(a) {\n        this-&gt;b = b;\n    }\nprivate:\n    int b;\n};\n\n\/\/\u6a21\u677f\u7c7b\u7ee7\u627f\u6a21\u677f\u7c7b\ntemplate &lt;class T&gt;\nclass C : public A&lt;T&gt;{\npublic:\n    C(T a, T c) : A&lt;T&gt;(a){\n        this-&gt;c = c;\n    }\nprotected:\n    T c;\n};\n\nvoid main() {\n    \/\/\u5b9e\u4f8b\u5316\u6a21\u677f\u7c7b\u5bf9\u8c61\n    \/\/List&lt;String&gt; list;\n    A&lt;int&gt; a(6);\n    system(&quot;pause&quot;);\n}<\/code><\/pre>\n<h2>STL\u6807\u51c6\u6a21\u677f\u5e93<\/h2>\n<h3>string<\/h3>\n<pre><code class=\"language-cpp\">\/\/stl standard template library \u6807\u51c6\u6a21\u677f\u5e93\n\/\/c++ \u96c6\u5408 -&gt; java \u96c6\u5408\n\n#include &lt;string&gt;\n\nvoid main() {\n    string s1 = &quot;craig david&quot;;\n    string s2(&quot; 7 days&quot;);\n    string s3 = s1 + s2;\n\n    cout &lt;&lt; s3 &lt;&lt; endl;\n\n    \/\/\u8f6cc\u5b57\u7b26\u4e32\n    const char* c_str = s3.c_str();\n    cout &lt;&lt; c_str &lt;&lt; endl;\n\n    \/\/s1.at(2);\n    \/\/s1.length();\n\n    system(&quot;pause&quot;);\n}<\/code><\/pre>\n<h3>\u5bb9\u5668<\/h3>\n<pre><code class=\"language-cpp\">\/\/\u5bb9\u5668\n#include &lt;vector&gt;\n\nvoid main() {\n    \/\/\u52a8\u6001\u6570\u7ec4\n    \/\/\u4e0d\u9700\u8981\u4f7f\u7528\u52a8\u6001\u5185\u5b58\u5206\u914d\uff0c\u5c31\u53ef\u4ee5\u4f7f\u7528\u52a8\u6001\u6570\u7ec4\n    vector&lt;int&gt; v;\n    v.push_back(12);\n    v.push_back(10);\n    v.push_back(5);\n\n    for (int i = 0; i &lt; v.size(); i++) {\n        cout &lt;&lt; v[i] &lt;&lt; endl;\n    }\n\n    system(&quot;pause&quot;);\n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>C++\u5f02\u5e38\u5904\u7406 \/\/C++ \u5f02\u5e38\u5904\u7406\uff0c\u6839\u636e\u629b\u51fa\u7684\u5f02\u5e38\u6570\u636e\u7c7b\u578b\uff0c\u8fdb\u5165\u5230\u76f8\u5e94\u7684catch\u5757\u4e2d void main( [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[],"class_list":["post-422","post","type-post","status-publish","format-standard","hentry","category-android-ndk"],"_links":{"self":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts\/422","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/comments?post=422"}],"version-history":[{"count":0,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts\/422\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/media?parent=422"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/categories?post=422"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/tags?post=422"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}