{"id":670,"date":"2016-02-12T14:59:11","date_gmt":"2016-02-12T14:59:11","guid":{"rendered":"http:\/\/coolt.ch\/notizen\/?p=670"},"modified":"2016-02-12T14:59:11","modified_gmt":"2016-02-12T14:59:11","slug":"klasse-definition","status":"publish","type":"post","link":"https:\/\/coolt.ch\/notizen\/klasse-definition\/","title":{"rendered":"Klasse Definition"},"content":{"rendered":"<pre class=\"lang:sh decode:true \">class Token_stream {\r\n    <strong>public:<\/strong>\r\n        void set(string line);\r\n        Token get();\r\n        void put_back(Token t);\r\n    <strong>private:<\/strong>\r\n        istringstream calculation;\r\n        bool full = false;\r\n        Token buffer;\r\n};<\/pre>\n<p>Eine Klasse beinhaltet Klassenvariablen und Klassen-Funktionen.<\/p>\n<p><strong>Instanzierung<\/strong><\/p>\n<pre class=\"lang:sh decode:true\">Token_stream <strong>current_token_stream<\/strong>;<\/pre>\n<p><strong>current_token_stream<\/strong> ist eine Instanz dieser Klasse. Alle Funktionen (die gebraucht werden um die Instanz zu verarbeiten) brauchen zuerst den Instanznamen.<\/p>\n<pre class=\"lang:sh decode:true\"><strong>current_token_stream<\/strong>.set(calculation_line);<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>Klassen-Funktionen<\/strong><br \/>\nJede Funktion einer Klasse muss nach der Klassendefinition definiert werden. Die Funktion braucht vor ihrem Namen die Klasse, zu der sie geh\u00f6rt.<\/p>\n<pre class=\"lang:sh decode:true\">void <strong>Token_stream::put_back<\/strong>(Token t) <strong>{<\/strong>\r\n    \r\n    \/\/ check if token is already in buffer\r\n    if (token_buffer_full) {\r\n        throw std::overflow_error(\"buffer contains already a Token\");\r\n    }\r\n    \r\n    \/\/ set token in buffer\r\n    token_buffer = t;\r\n\r\n    token_buffer_full = true;\r\n<strong>}<\/strong><\/pre>\n<p>Funktionen einer Klasse, m\u00fcssen nicht forward deklariert werden. Sie sind durch die Definition der Klasse bereits bekannt.<\/p>\n<p><strong>Klassen-Variablen<\/strong><br \/>\nEs gibt meist wenige Klassenvariblen. Denn diese sind <strong>&#8222;global&#8220; innerhalb der Klasse<\/strong>. Alle Funktionen k\u00f6nnen auf diese Zugreifen.<\/p>\n<pre class=\"lang:sh decode:true\">class Token_stream {\r\n    <strong>...<\/strong>\r\n    <strong>private:<\/strong>\r\n        istringstream calculation;\r\n        bool full = false;\r\n        Token token_buffer;\r\n};<\/pre>\n<p>Typisch ist, dass sie im private-Teil der Klasse stehen.<\/p>\n<p><strong>Lokale Variablen<\/strong><br \/>\nIn jeder Klassen-Funktion werden zur Verarbeitung auch lokale Variablen gebraucht.<\/p>\n<pre class=\"lang:sh decode:true\">Token Token_stream::get() {\r\n\r\n   <strong> char c;\r\n    Token t;<\/strong>\r\n\r\n    calculation &gt;&gt; <strong>c<\/strong>;\r\n\r\n    if (isdigit(<strong>c<\/strong>)) {\r\n        <strong>t<\/strong>.kind = 'n';\r\n       <strong> t<\/strong>.value = <strong>c<\/strong>;\r\n    } else if (c == '\\0') {\r\n        <strong>t<\/strong>.kind = 'q';\r\n    } \r\n\r\n    return <strong>t<\/strong>;\r\n}<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>class Token_stream { public: void set(string line); Token get(); void put_back(Token t); private: istringstream calculation; bool full = false; Token buffer; }; Eine Klasse beinhaltet Klassenvariablen und Klassen-Funktionen. Instanzierung Token_stream current_token_stream; current_token_stream ist eine Instanz dieser Klasse. Alle Funktionen (die gebraucht werden um die Instanz zu verarbeiten) brauchen zuerst den Instanznamen. current_token_stream.set(calculation_line); &nbsp; Klassen-Funktionen Jede &hellip; <a href=\"https:\/\/coolt.ch\/notizen\/klasse-definition\/\" class=\"more-link\"><span class=\"screen-reader-text\">Klasse Definition<\/span> weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[29,65],"tags":[],"_links":{"self":[{"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/posts\/670"}],"collection":[{"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/comments?post=670"}],"version-history":[{"count":4,"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/posts\/670\/revisions"}],"predecessor-version":[{"id":1336,"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/posts\/670\/revisions\/1336"}],"wp:attachment":[{"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/media?parent=670"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/categories?post=670"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/coolt.ch\/notizen\/wp-json\/wp\/v2\/tags?post=670"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}