CINXE.COM

C++ – Wikipédia

<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-disabled skin-theme-clientpref-day vector-sticky-header-enabled vector-toc-available" lang="hu" dir="ltr"> <head> <meta charset="UTF-8"> <title>C++ – Wikipédia</title> <script>(function(){var className="client-js vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-disabled skin-theme-clientpref-day vector-sticky-header-enabled vector-toc-available";var cookie=document.cookie.match(/(?:^|; )huwikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":[",\t."," \t,"],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"ymd" ,"wgMonthNames":["","január","február","március","április","május","június","július","augusztus","szeptember","október","november","december"],"wgRequestId":"a9abcccd-8e4c-4416-b610-208bfdae5f22","wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"C++","wgTitle":"C++","wgCurRevisionId":27055180,"wgRevisionId":27055180,"wgArticleId":172233,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["Wikipédia-szócikkek LCCN-azonosítóval","Wikipédia-szócikkek GND-azonosítóval","Wikipédia-szócikkek BNF-azonosítóval","C++","Imperatív programozási nyelvek"],"wgPageViewLanguage":"hu","wgPageContentLanguage":"hu","wgPageContentModel":"wikitext","wgRelevantPageName":"C++","wgRelevantArticleId":172233,"wgIsProbablyEditable":true,"wgRelevantPageIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgNoticeProject":"wikipedia","wgCiteReferencePreviewsActive": true,"wgFlaggedRevsParams":{"tags":{"accuracy":{"levels":2}}},"wgStableRevisionId":27055180,"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgPopupsFlags":0,"wgVisualEditor":{"pageLanguageCode":"hu","pageLanguageDir":"ltr","pageVariantFallbacks":"hu"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":true,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":70000,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true,"wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q2407","wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile","model","platform","platformVersion"],"GEHomepageSuggestedEditsEnableTopics":true,"wgGETopicsMatchModeEnabled":false,"wgGEStructuredTaskRejectionReasonTextInputEnabled":false,"wgGELevelingUpEnabledForUser":false};RLSTATE={"ext.gadget.infobox":"ready", "ext.gadget.wikiMenuStyles":"ready","ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.cite.styles":"ready","ext.pygments":"ready","skins.vector.search.codex.styles":"ready","skins.vector.styles":"ready","skins.vector.icons":"ready","jquery.tablesorter.styles":"ready","jquery.makeCollapsible.styles":"ready","ext.flaggedRevs.basic":"ready","mediawiki.codex.messagebox.styles":"ready","ext.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.interlanguage":"ready","wikibase.client.init":"ready"};RLPAGEMODULES=["ext.cite.ux-enhancements","ext.pygments.view","mediawiki.page.media","site","mediawiki.page.ready","jquery.tablesorter","jquery.makeCollapsible","mediawiki.toc","skins.vector.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.flaggedRevs.advanced","ext.gadget.wdsearch","ext.gadget.irclogin", "ext.gadget.ImageAnnotator.loader","ext.gadget.collapsible","ext.gadget.kepdia","ext.gadget.kinai","ext.gadget.poziciosTerkep","ext.gadget.wikiMenu","ext.gadget.wiwosm","ext.urlShortener.toolbar","ext.centralauth.centralautologin","mmv.bootstrap","ext.popups","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.interface","ext.cx.eventlogging.campaigns","ext.cx.uls.quick.actions","wikibase.client.vector-2022","ext.checkUser.clientHints","ext.growthExperiments.SuggestedEditSession","oojs-ui.styles.icons-media","oojs-ui-core.icons"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=hu&amp;modules=ext.cite.styles%7Cext.flaggedRevs.basic%7Cext.pygments%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediamessages.styles%7Cjquery.makeCollapsible.styles%7Cjquery.tablesorter.styles%7Cmediawiki.codex.messagebox.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles%7Cwikibase.client.init&amp;only=styles&amp;skin=vector-2022"> <script async="" src="/w/load.php?lang=hu&amp;modules=startup&amp;only=scripts&amp;raw=1&amp;skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=hu&amp;modules=ext.gadget.infobox%2CwikiMenuStyles&amp;only=styles&amp;skin=vector-2022"> <link rel="stylesheet" href="/w/load.php?lang=hu&amp;modules=site.styles&amp;only=styles&amp;skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.18"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta property="og:image" content="https://upload.wikimedia.org/wikipedia/commons/thumb/1/18/ISO_C%2B%2B_Logo.svg/1200px-ISO_C%2B%2B_Logo.svg.png"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="1349"> <meta property="og:image" content="https://upload.wikimedia.org/wikipedia/commons/thumb/1/18/ISO_C%2B%2B_Logo.svg/800px-ISO_C%2B%2B_Logo.svg.png"> <meta property="og:image:width" content="800"> <meta property="og:image:height" content="899"> <meta property="og:image" content="https://upload.wikimedia.org/wikipedia/commons/thumb/1/18/ISO_C%2B%2B_Logo.svg/640px-ISO_C%2B%2B_Logo.svg.png"> <meta property="og:image:width" content="640"> <meta property="og:image:height" content="719"> <meta name="viewport" content="width=1120"> <meta property="og:title" content="C++ – Wikipédia"> <meta property="og:type" content="website"> <link rel="preconnect" href="//upload.wikimedia.org"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//hu.m.wikipedia.org/wiki/C%2B%2B"> <link rel="alternate" type="application/x-wiki" title="Szerkesztés" href="/w/index.php?title=C%2B%2B&amp;action=edit"> <link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png"> <link rel="icon" href="/static/favicon/wikipedia.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Wikipédia (hu)"> <link rel="EditURI" type="application/rsd+xml" href="//hu.wikipedia.org/w/api.php?action=rsd"> <link rel="canonical" href="https://hu.wikipedia.org/wiki/C%2B%2B"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.hu"> <link rel="alternate" type="application/atom+xml" title="Wikipédia Atom-hírcsatorna" href="/w/index.php?title=Speci%C3%A1lis:Friss_v%C3%A1ltoztat%C3%A1sok&amp;feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="login.wikimedia.org"> </head> <body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject mw-editable page-C rootpage-C skin-vector-2022 action-view"><a class="mw-jump-link" href="#bodyContent">Ugrás a tartalomhoz</a> <div class="vector-header-container"> <header class="vector-header mw-header"> <div class="vector-header-start"> <nav class="vector-main-menu-landmark" aria-label="Wiki"> <div id="vector-main-menu-dropdown" class="vector-dropdown vector-main-menu-dropdown vector-button-flush-left vector-button-flush-right" title="Főmenü" > <input type="checkbox" id="vector-main-menu-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-main-menu-dropdown" class="vector-dropdown-checkbox " aria-label="Főmenü" > <label id="vector-main-menu-dropdown-label" for="vector-main-menu-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-menu mw-ui-icon-wikimedia-menu"></span> <span class="vector-dropdown-label-text">Főmenü</span> </label> <div class="vector-dropdown-content"> <div id="vector-main-menu-unpinned-container" class="vector-unpinned-container"> <div id="vector-main-menu" class="vector-main-menu vector-pinnable-element"> <div class="vector-pinnable-header vector-main-menu-pinnable-header vector-pinnable-header-unpinned" data-feature-name="main-menu-pinned" data-pinnable-element-id="vector-main-menu" data-pinned-container-id="vector-main-menu-pinned-container" data-unpinned-container-id="vector-main-menu-unpinned-container" > <div class="vector-pinnable-header-label">Főmenü</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">áthelyezés az oldalsávba</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">elrejtés</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> Navigáció </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/Kezd%C5%91lap" title="A kezdőlap megtekintése [z]" accesskey="z"><span>Kezdőlap</span></a></li><li id="n-sidebar-contents" class="mw-list-item"><a href="/wiki/Wikip%C3%A9dia:Tartalom"><span>Tartalom</span></a></li><li id="n-sidebar-featured" class="mw-list-item"><a href="/wiki/Wikip%C3%A9dia:Kiemelt_sz%C3%B3cikkek_list%C3%A1ja"><span>Kiemelt szócikkek</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Speci%C3%A1lis:Friss_v%C3%A1ltoztat%C3%A1sok" title="A wikiben történt legutóbbi változtatások listája [r]" accesskey="r"><span>Friss változtatások</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Speci%C3%A1lis:Lap_tal%C3%A1lomra" title="Egy véletlenszerűen kiválasztott lap betöltése [x]" accesskey="x"><span>Lap találomra</span></a></li><li id="n-sidebar-enquiries" class="mw-list-item"><a href="/wiki/Wikip%C3%A9dia:Tudakoz%C3%B3"><span>Tudakozó</span></a></li><li id="n-specialpages" class="mw-list-item"><a href="/wiki/Speci%C3%A1lis:Speci%C3%A1lis_lapok"><span>Speciális lapok</span></a></li> </ul> </div> </div> <div id="p-sidebar-participate" class="vector-menu mw-portlet mw-portlet-sidebar-participate" > <div class="vector-menu-heading"> Részvétel </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-sidebar-basics" class="mw-list-item"><a href="/wiki/Wikip%C3%A9dia:%C3%9Aj_szerkeszt%C5%91knek"><span>Kezdőknek</span></a></li><li id="n-sidebar-help" class="mw-list-item"><a href="/wiki/Wikip%C3%A9dia:Seg%C3%ADts%C3%A9g"><span>Segítség</span></a></li><li id="n-portal" class="mw-list-item"><a href="/wiki/Port%C3%A1l:K%C3%B6z%C3%B6ss%C3%A9g" title="A projektről, miben segíthetsz, mit hol találsz meg"><span>Közösségi portál</span></a></li><li id="n-sidebar-contact" class="mw-list-item"><a href="/wiki/Wikip%C3%A9dia:Kapcsolatfelv%C3%A9tel"><span>Kapcsolatfelvétel</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/Kezd%C5%91lap" class="mw-logo"> <img class="mw-logo-icon" src="/static/images/icons/wikipedia.png" alt="" aria-hidden="true" height="50" width="50"> <span class="mw-logo-container skin-invert"> <img class="mw-logo-wordmark" alt="Wikipédia" src="/static/images/mobile/copyright/wikipedia-wordmark-fr.svg" style="width: 7.4375em; height: 1.125em;"> <img class="mw-logo-tagline" alt="" src="/static/images/mobile/copyright/wikipedia-tagline-hu.svg" width="120" height="13" style="width: 7.5em; height: 0.8125em;"> </span> </a> </div> <div class="vector-header-end"> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-collapses vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <a href="/wiki/Speci%C3%A1lis:Keres%C3%A9s" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="Keresés a Wikipédián [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Keresés</span> </a> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail cdx-typeahead-search--auto-expand-width"> <form action="/w/index.php" id="searchform" class="cdx-search-input cdx-search-input--has-end-button"> <div id="simpleSearch" class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Keresés a Wikipédián" aria-label="Keresés a Wikipédián" autocapitalize="sentences" title="Keresés a Wikipédián [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Speciális:Keresés"> </div> <button class="cdx-button cdx-search-input__end-button">Keresés</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="Személyes eszközök"> <div class="vector-user-links-main"> <div id="p-vector-user-menu-preferences" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-userpage" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <nav class="vector-appearance-landmark" aria-label="Megjelenés"> <div id="vector-appearance-dropdown" class="vector-dropdown " title="Change the appearance of the page&#039;s font size, width, and color" > <input type="checkbox" id="vector-appearance-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-appearance-dropdown" class="vector-dropdown-checkbox " aria-label="Megjelenés" > <label id="vector-appearance-dropdown-label" for="vector-appearance-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-appearance mw-ui-icon-wikimedia-appearance"></span> <span class="vector-dropdown-label-text">Megjelenés</span> </label> <div class="vector-dropdown-content"> <div id="vector-appearance-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div id="p-vector-user-menu-notifications" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="https://donate.wikimedia.org/?wmf_source=donate&amp;wmf_medium=sidebar&amp;wmf_campaign=hu.wikipedia.org&amp;uselang=hu" class=""><span>Adományok</span></a> </li> <li id="pt-createaccount-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Speci%C3%A1lis:Szerkeszt%C5%91i_fi%C3%B3k_l%C3%A9trehoz%C3%A1sa&amp;returnto=C%2B%2B" title="Arra bíztatunk, hogy hozz létre egy fiókot, és jelentkezz be, azonban ez nem kötelező" class=""><span>Fiók létrehozása</span></a> </li> <li id="pt-login-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Speci%C3%A1lis:Bel%C3%A9p%C3%A9s&amp;returnto=C%2B%2B" title="Bejelentkezni javasolt, de nem kötelező [o]" accesskey="o" class=""><span>Bejelentkezés</span></a> </li> </ul> </div> </div> </div> <div id="vector-user-links-dropdown" class="vector-dropdown vector-user-menu vector-button-flush-right vector-user-menu-logged-out" title="További lehetőségek" > <input type="checkbox" id="vector-user-links-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-user-links-dropdown" class="vector-dropdown-checkbox " aria-label="Személyes eszközök" > <label id="vector-user-links-dropdown-label" for="vector-user-links-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-ellipsis mw-ui-icon-wikimedia-ellipsis"></span> <span class="vector-dropdown-label-text">Személyes eszközök</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item" title="Felhasználói menü" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport" class="user-links-collapsible-item mw-list-item"><a href="https://donate.wikimedia.org/?wmf_source=donate&amp;wmf_medium=sidebar&amp;wmf_campaign=hu.wikipedia.org&amp;uselang=hu"><span>Adományok</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Speci%C3%A1lis:Szerkeszt%C5%91i_fi%C3%B3k_l%C3%A9trehoz%C3%A1sa&amp;returnto=C%2B%2B" title="Arra bíztatunk, hogy hozz létre egy fiókot, és jelentkezz be, azonban ez nem kötelező"><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>Fiók létrehozása</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Speci%C3%A1lis:Bel%C3%A9p%C3%A9s&amp;returnto=C%2B%2B" title="Bejelentkezni javasolt, de nem kötelező [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>Bejelentkezés</span></a></li> </ul> </div> </div> <div id="p-user-menu-anon-editor" class="vector-menu mw-portlet mw-portlet-user-menu-anon-editor" > <div class="vector-menu-heading"> Lapok kijelentkezett szerkesztőknek <a href="/wiki/Seg%C3%ADts%C3%A9g:Bevezet%C3%A9s" aria-label="Tudj meg többet a szerkesztésről"><span>további információk</span></a> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/Speci%C3%A1lis:K%C3%B6zrem%C5%B1k%C3%B6d%C3%A9seim" title="Erről az IP-címről végrehajtott szerkesztések listája [y]" accesskey="y"><span>Közreműködések</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Speci%C3%A1lis:Vit%C3%A1m" title="Az általad használt IP-címről végrehajtott szerkesztések megvitatása [n]" accesskey="n"><span>Vitalap</span></a></li> </ul> </div> </div> </div> </div> </nav> </div> </header> </div> <div class="mw-page-container"> <div class="mw-page-container-inner"> <div class="vector-sitenotice-container"> <div id="siteNotice"><!-- CentralNotice --></div> </div> <div class="vector-column-start"> <div class="vector-main-menu-container"> <div id="mw-navigation"> <nav id="mw-panel" class="vector-main-menu-landmark" aria-label="Wiki"> <div id="vector-main-menu-pinned-container" class="vector-pinned-container"> </div> </nav> </div> </div> <div class="vector-sticky-pinned-container"> <nav id="mw-panel-toc" aria-label="Tartalomjegyzék" data-event-name="ui.sidebar-toc" class="mw-table-of-contents-container vector-toc-landmark"> <div id="vector-toc-pinned-container" class="vector-pinned-container"> <div id="vector-toc" class="vector-toc vector-pinnable-element"> <div class="vector-pinnable-header vector-toc-pinnable-header vector-pinnable-header-pinned" data-feature-name="toc-pinned" data-pinnable-element-id="vector-toc" > <h2 class="vector-pinnable-header-label">Tartalomjegyzék</h2> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-toc.pin">áthelyezés az oldalsávba</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-toc.unpin">elrejtés</button> </div> <ul class="vector-toc-contents" id="mw-panel-toc-list"> <li id="toc-mw-content-text" class="vector-toc-list-item vector-toc-level-1"> <a href="#" class="vector-toc-link"> <div class="vector-toc-text">Bevezető</div> </a> </li> <li id="toc-Története" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Története"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>Története</span> </div> </a> <button aria-controls="toc-Története-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>A(z) Története alszakasz kinyitása/becsukása</span> </button> <ul id="toc-Története-sublist" class="vector-toc-list"> <li id="toc-Érdekesség" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Érdekesség"> <div class="vector-toc-text"> <span class="vector-toc-numb">1.1</span> <span>Érdekesség</span> </div> </a> <ul id="toc-Érdekesség-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Fordítók,_fejlesztőeszközök" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Fordítók,_fejlesztőeszközök"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>Fordítók, fejlesztőeszközök</span> </div> </a> <ul id="toc-Fordítók,_fejlesztőeszközök-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-A_név_eredete" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#A_név_eredete"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>A név eredete</span> </div> </a> <ul id="toc-A_név_eredete-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-A_C++_alapelemei" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#A_C++_alapelemei"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span> <span>A C++ alapelemei</span> </div> </a> <button aria-controls="toc-A_C++_alapelemei-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>A(z) A C++ alapelemei alszakasz kinyitása/becsukása</span> </button> <ul id="toc-A_C++_alapelemei-sublist" class="vector-toc-list"> <li id="toc-Jelkészlet" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Jelkészlet"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.1</span> <span>Jelkészlet</span> </div> </a> <ul id="toc-Jelkészlet-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Azonosítók" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Azonosítók"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.2</span> <span>Azonosítók</span> </div> </a> <ul id="toc-Azonosítók-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Kulcsszavak" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Kulcsszavak"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.3</span> <span>Kulcsszavak</span> </div> </a> <ul id="toc-Kulcsszavak-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Megjegyzések" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Megjegyzések"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.4</span> <span>Megjegyzések</span> </div> </a> <ul id="toc-Megjegyzések-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Operátorok" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Operátorok"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.5</span> <span>Operátorok</span> </div> </a> <ul id="toc-Operátorok-sublist" class="vector-toc-list"> <li id="toc-Precedencia" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Precedencia"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.5.1</span> <span>Precedencia</span> </div> </a> <ul id="toc-Precedencia-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Operátorok_túlterhelése" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Operátorok_túlterhelése"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.5.2</span> <span>Operátorok túlterhelése</span> </div> </a> <ul id="toc-Operátorok_túlterhelése-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Típusok,_változók,_konstansok" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Típusok,_változók,_konstansok"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.6</span> <span>Típusok, változók, konstansok</span> </div> </a> <ul id="toc-Típusok,_változók,_konstansok-sublist" class="vector-toc-list"> <li id="toc-A_felsorolt_típus_(enum)" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#A_felsorolt_típus_(enum)"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.6.1</span> <span>A felsorolt típus (enum)</span> </div> </a> <ul id="toc-A_felsorolt_típus_(enum)-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Típuskonverziók" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Típuskonverziók"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.6.2</span> <span>Típuskonverziók</span> </div> </a> <ul id="toc-Típuskonverziók-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Pointerek" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Pointerek"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.7</span> <span>Pointerek</span> </div> </a> <ul id="toc-Pointerek-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Névterek" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Névterek"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.8</span> <span>Névterek</span> </div> </a> <ul id="toc-Névterek-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-A_C++_programok_szerkezete" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#A_C++_programok_szerkezete"> <div class="vector-toc-text"> <span class="vector-toc-numb">5</span> <span>A C++ programok szerkezete</span> </div> </a> <button aria-controls="toc-A_C++_programok_szerkezete-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>A(z) A C++ programok szerkezete alszakasz kinyitása/becsukása</span> </button> <ul id="toc-A_C++_programok_szerkezete-sublist" class="vector-toc-list"> <li id="toc-Hello_World!" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Hello_World!"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.1</span> <span>Hello World!</span> </div> </a> <ul id="toc-Hello_World!-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Standard_IO" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Standard_IO"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.2</span> <span>Standard IO</span> </div> </a> <ul id="toc-Standard_IO-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Az_előfordító" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Az_előfordító"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.3</span> <span>Az előfordító</span> </div> </a> <ul id="toc-Az_előfordító-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Vezérlési_szerkezetek" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Vezérlési_szerkezetek"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.4</span> <span>Vezérlési szerkezetek</span> </div> </a> <ul id="toc-Vezérlési_szerkezetek-sublist" class="vector-toc-list"> <li id="toc-Szekvencia" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Szekvencia"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.4.1</span> <span>Szekvencia</span> </div> </a> <ul id="toc-Szekvencia-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Elágazás_(szelekció)" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Elágazás_(szelekció)"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.4.2</span> <span>Elágazás (szelekció)</span> </div> </a> <ul id="toc-Elágazás_(szelekció)-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Ciklus_(iteráció)" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Ciklus_(iteráció)"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.4.3</span> <span>Ciklus (iteráció)</span> </div> </a> <ul id="toc-Ciklus_(iteráció)-sublist" class="vector-toc-list"> <li id="toc-Break,_continue" class="vector-toc-list-item vector-toc-level-4"> <a class="vector-toc-link" href="#Break,_continue"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.4.3.1</span> <span>Break, continue</span> </div> </a> <ul id="toc-Break,_continue-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-A_goto" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#A_goto"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.4.4</span> <span>A goto</span> </div> </a> <ul id="toc-A_goto-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Adatszerkezetek" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Adatszerkezetek"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.5</span> <span>Adatszerkezetek</span> </div> </a> <ul id="toc-Adatszerkezetek-sublist" class="vector-toc-list"> <li id="toc-Tömb" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Tömb"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.5.1</span> <span>Tömb</span> </div> </a> <ul id="toc-Tömb-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Struktúrák" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Struktúrák"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.5.2</span> <span>Struktúrák</span> </div> </a> <ul id="toc-Struktúrák-sublist" class="vector-toc-list"> <li id="toc-Tömb_struktúrán_belül" class="vector-toc-list-item vector-toc-level-4"> <a class="vector-toc-link" href="#Tömb_struktúrán_belül"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.5.2.1</span> <span>Tömb struktúrán belül</span> </div> </a> <ul id="toc-Tömb_struktúrán_belül-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Uniók,_bitmezők" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Uniók,_bitmezők"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.5.3</span> <span>Uniók, bitmezők</span> </div> </a> <ul id="toc-Uniók,_bitmezők-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Osztályok" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Osztályok"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.5.4</span> <span>Osztályok</span> </div> </a> <ul id="toc-Osztályok-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Függvények" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Függvények"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.6</span> <span>Függvények</span> </div> </a> <ul id="toc-Függvények-sublist" class="vector-toc-list"> <li id="toc-Eljárás,_függvény" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Eljárás,_függvény"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.6.1</span> <span>Eljárás, függvény</span> </div> </a> <ul id="toc-Eljárás,_függvény-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Definíció,_deklaráció" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Definíció,_deklaráció"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.6.2</span> <span>Definíció, deklaráció</span> </div> </a> <ul id="toc-Definíció,_deklaráció-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Paraméterátadás" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Paraméterátadás"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.6.3</span> <span>Paraméterátadás</span> </div> </a> <ul id="toc-Paraméterátadás-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Alapértelmezett_paraméterek" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Alapértelmezett_paraméterek"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.6.4</span> <span>Alapértelmezett paraméterek</span> </div> </a> <ul id="toc-Alapértelmezett_paraméterek-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Inline_függvények" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Inline_függvények"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.6.5</span> <span>Inline függvények</span> </div> </a> <ul id="toc-Inline_függvények-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Lokális_változók" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Lokális_változók"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.6.6</span> <span>Lokális változók</span> </div> </a> <ul id="toc-Lokális_változók-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Túlterhelés" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Túlterhelés"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.6.7</span> <span>Túlterhelés</span> </div> </a> <ul id="toc-Túlterhelés-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Kivételkezelés" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Kivételkezelés"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.7</span> <span>Kivételkezelés</span> </div> </a> <ul id="toc-Kivételkezelés-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Dinamikus_memóriakezelés" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Dinamikus_memóriakezelés"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.8</span> <span>Dinamikus memóriakezelés</span> </div> </a> <ul id="toc-Dinamikus_memóriakezelés-sublist" class="vector-toc-list"> <li id="toc-A_new_és_delete_operátorok" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#A_new_és_delete_operátorok"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.8.1</span> <span>A new és delete operátorok</span> </div> </a> <ul id="toc-A_new_és_delete_operátorok-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> </ul> </li> <li id="toc-Objektumorientált_C++" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Objektumorientált_C++"> <div class="vector-toc-text"> <span class="vector-toc-numb">6</span> <span>Objektumorientált C++</span> </div> </a> <button aria-controls="toc-Objektumorientált_C++-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>A(z) Objektumorientált C++ alszakasz kinyitása/becsukása</span> </button> <ul id="toc-Objektumorientált_C++-sublist" class="vector-toc-list"> <li id="toc-Adattagok_és_tagfüggvények" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Adattagok_és_tagfüggvények"> <div class="vector-toc-text"> <span class="vector-toc-numb">6.1</span> <span>Adattagok és tagfüggvények</span> </div> </a> <ul id="toc-Adattagok_és_tagfüggvények-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Statikus_tagok" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Statikus_tagok"> <div class="vector-toc-text"> <span class="vector-toc-numb">6.2</span> <span>Statikus tagok</span> </div> </a> <ul id="toc-Statikus_tagok-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Konstruktorok" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Konstruktorok"> <div class="vector-toc-text"> <span class="vector-toc-numb">6.3</span> <span>Konstruktorok</span> </div> </a> <ul id="toc-Konstruktorok-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Destruktorok" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Destruktorok"> <div class="vector-toc-text"> <span class="vector-toc-numb">6.4</span> <span>Destruktorok</span> </div> </a> <ul id="toc-Destruktorok-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Példányosítás" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Példányosítás"> <div class="vector-toc-text"> <span class="vector-toc-numb">6.5</span> <span>Példányosítás</span> </div> </a> <ul id="toc-Példányosítás-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Öröklődés" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Öröklődés"> <div class="vector-toc-text"> <span class="vector-toc-numb">6.6</span> <span>Öröklődés</span> </div> </a> <ul id="toc-Öröklődés-sublist" class="vector-toc-list"> <li id="toc-Öröklés_láthatósága" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Öröklés_láthatósága"> <div class="vector-toc-text"> <span class="vector-toc-numb">6.6.1</span> <span>Öröklés láthatósága</span> </div> </a> <ul id="toc-Öröklés_láthatósága-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Névütközések" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Névütközések"> <div class="vector-toc-text"> <span class="vector-toc-numb">6.6.2</span> <span>Névütközések</span> </div> </a> <ul id="toc-Névütközések-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> </ul> </li> <li id="toc-Generikus_C++" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Generikus_C++"> <div class="vector-toc-text"> <span class="vector-toc-numb">7</span> <span>Generikus C++</span> </div> </a> <button aria-controls="toc-Generikus_C++-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>A(z) Generikus C++ alszakasz kinyitása/becsukása</span> </button> <ul id="toc-Generikus_C++-sublist" class="vector-toc-list"> <li id="toc-A_generikus_programozásról" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#A_generikus_programozásról"> <div class="vector-toc-text"> <span class="vector-toc-numb">7.1</span> <span>A generikus programozásról</span> </div> </a> <ul id="toc-A_generikus_programozásról-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-A_template_kulcsszó" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#A_template_kulcsszó"> <div class="vector-toc-text"> <span class="vector-toc-numb">7.2</span> <span>A template kulcsszó</span> </div> </a> <ul id="toc-A_template_kulcsszó-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Példányosulás" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Példányosulás"> <div class="vector-toc-text"> <span class="vector-toc-numb">7.3</span> <span>Példányosulás</span> </div> </a> <ul id="toc-Példányosulás-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Típusazonosságok" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Típusazonosságok"> <div class="vector-toc-text"> <span class="vector-toc-numb">7.4</span> <span>Típusazonosságok</span> </div> </a> <ul id="toc-Típusazonosságok-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Template_metaprogramok" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Template_metaprogramok"> <div class="vector-toc-text"> <span class="vector-toc-numb">7.5</span> <span>Template metaprogramok</span> </div> </a> <ul id="toc-Template_metaprogramok-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Jegyzetek" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Jegyzetek"> <div class="vector-toc-text"> <span class="vector-toc-numb">8</span> <span>Jegyzetek</span> </div> </a> <ul id="toc-Jegyzetek-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Források" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Források"> <div class="vector-toc-text"> <span class="vector-toc-numb">9</span> <span>Források</span> </div> </a> <ul id="toc-Források-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-További_információk" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#További_információk"> <div class="vector-toc-text"> <span class="vector-toc-numb">10</span> <span>További információk</span> </div> </a> <button aria-controls="toc-További_információk-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>A(z) További információk alszakasz kinyitása/becsukása</span> </button> <ul id="toc-További_információk-sublist" class="vector-toc-list"> <li id="toc-Magyarul" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Magyarul"> <div class="vector-toc-text"> <span class="vector-toc-numb">10.1</span> <span>Magyarul</span> </div> </a> <ul id="toc-Magyarul-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Angolul" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Angolul"> <div class="vector-toc-text"> <span class="vector-toc-numb">10.2</span> <span>Angolul</span> </div> </a> <ul id="toc-Angolul-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> </ul> </div> </div> </nav> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <nav aria-label="Tartalomjegyzék" class="vector-toc-landmark"> <div id="vector-page-titlebar-toc" class="vector-dropdown vector-page-titlebar-toc vector-button-flush-left" title="Tartalomjegyzék" > <input type="checkbox" id="vector-page-titlebar-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-titlebar-toc" class="vector-dropdown-checkbox " aria-label="Tartalomjegyzék kinyitása/becsukása" > <label id="vector-page-titlebar-toc-label" for="vector-page-titlebar-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">Tartalomjegyzék kinyitása/becsukása</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-titlebar-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">C++</span></h1> <div id="p-lang-btn" class="vector-dropdown mw-portlet mw-portlet-lang" > <input type="checkbox" id="p-lang-btn-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-lang-btn" class="vector-dropdown-checkbox mw-interlanguage-selector" aria-label="Ugrás egy más nyelvű szócikkre. Elérhető 110 nyelven" > <label id="p-lang-btn-label" for="p-lang-btn-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive mw-portlet-lang-heading-110" aria-hidden="true" ><span class="vector-icon mw-ui-icon-language-progressive mw-ui-icon-wikimedia-language-progressive"></span> <span class="vector-dropdown-label-text">110 nyelv</span> </label> <div class="vector-dropdown-content"> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="interlanguage-link interwiki-en mw-list-item"><a href="https://en.wikipedia.org/wiki/C%2B%2B" title="C++ – angol" lang="en" hreflang="en" data-title="C++" data-language-autonym="English" data-language-local-name="angol" class="interlanguage-link-target"><span>English</span></a></li><li class="interlanguage-link interwiki-af mw-list-item"><a href="https://af.wikipedia.org/wiki/C%2B%2B" title="C++ – afrikaans" lang="af" hreflang="af" data-title="C++" data-language-autonym="Afrikaans" data-language-local-name="afrikaans" class="interlanguage-link-target"><span>Afrikaans</span></a></li><li class="interlanguage-link interwiki-an mw-list-item"><a href="https://an.wikipedia.org/wiki/C%2B%2B" title="C++ – aragonéz" lang="an" hreflang="an" data-title="C++" data-language-autonym="Aragonés" data-language-local-name="aragonéz" class="interlanguage-link-target"><span>Aragonés</span></a></li><li class="interlanguage-link interwiki-ar mw-list-item"><a href="https://ar.wikipedia.org/wiki/%D8%B3%D9%8A%2B%2B" title="سي++ – arab" lang="ar" hreflang="ar" data-title="سي++" data-language-autonym="العربية" data-language-local-name="arab" class="interlanguage-link-target"><span>العربية</span></a></li><li class="interlanguage-link interwiki-arz mw-list-item"><a href="https://arz.wikipedia.org/wiki/%D8%B3%D9%89%2B%2B" title="سى++ – Egyptian Arabic" lang="arz" hreflang="arz" data-title="سى++" data-language-autonym="مصرى" data-language-local-name="Egyptian Arabic" class="interlanguage-link-target"><span>مصرى</span></a></li><li class="interlanguage-link interwiki-as mw-list-item"><a href="https://as.wikipedia.org/wiki/%E0%A6%9A%E0%A6%BF%2B%2B" title="চি++ – asszámi" lang="as" hreflang="as" data-title="চি++" data-language-autonym="অসমীয়া" data-language-local-name="asszámi" class="interlanguage-link-target"><span>অসমীয়া</span></a></li><li class="interlanguage-link interwiki-ast mw-list-item"><a href="https://ast.wikipedia.org/wiki/C%2B%2B" title="C++ – asztúr" lang="ast" hreflang="ast" data-title="C++" data-language-autonym="Asturianu" data-language-local-name="asztúr" class="interlanguage-link-target"><span>Asturianu</span></a></li><li class="interlanguage-link interwiki-az mw-list-item"><a href="https://az.wikipedia.org/wiki/C%2B%2B" title="C++ – azerbajdzsáni" lang="az" hreflang="az" data-title="C++" data-language-autonym="Azərbaycanca" data-language-local-name="azerbajdzsáni" class="interlanguage-link-target"><span>Azərbaycanca</span></a></li><li class="interlanguage-link interwiki-azb mw-list-item"><a href="https://azb.wikipedia.org/wiki/%D8%B3%DB%8C%2B%2B" title="سی++ – South Azerbaijani" lang="azb" hreflang="azb" data-title="سی++" data-language-autonym="تۆرکجه" data-language-local-name="South Azerbaijani" class="interlanguage-link-target"><span>تۆرکجه</span></a></li><li class="interlanguage-link interwiki-bat-smg mw-list-item"><a href="https://bat-smg.wikipedia.org/wiki/C%2B%2B" title="C++ – Samogitian" lang="sgs" hreflang="sgs" data-title="C++" data-language-autonym="Žemaitėška" data-language-local-name="Samogitian" class="interlanguage-link-target"><span>Žemaitėška</span></a></li><li class="interlanguage-link interwiki-be mw-list-item"><a href="https://be.wikipedia.org/wiki/C%2B%2B" title="C++ – belarusz" lang="be" hreflang="be" data-title="C++" data-language-autonym="Беларуская" data-language-local-name="belarusz" class="interlanguage-link-target"><span>Беларуская</span></a></li><li class="interlanguage-link interwiki-be-x-old mw-list-item"><a href="https://be-tarask.wikipedia.org/wiki/C%2B%2B" title="C++ – Belarusian (Taraškievica orthography)" lang="be-tarask" hreflang="be-tarask" data-title="C++" data-language-autonym="Беларуская (тарашкевіца)" data-language-local-name="Belarusian (Taraškievica orthography)" class="interlanguage-link-target"><span>Беларуская (тарашкевіца)</span></a></li><li class="interlanguage-link interwiki-bg mw-list-item"><a href="https://bg.wikipedia.org/wiki/C%2B%2B" title="C++ – bolgár" lang="bg" hreflang="bg" data-title="C++" data-language-autonym="Български" data-language-local-name="bolgár" class="interlanguage-link-target"><span>Български</span></a></li><li class="interlanguage-link interwiki-bn mw-list-item"><a href="https://bn.wikipedia.org/wiki/%E0%A6%B8%E0%A6%BF%2B%2B" title="সি++ – bangla" lang="bn" hreflang="bn" data-title="সি++" data-language-autonym="বাংলা" data-language-local-name="bangla" class="interlanguage-link-target"><span>বাংলা</span></a></li><li class="interlanguage-link interwiki-bo mw-list-item"><a href="https://bo.wikipedia.org/wiki/C%2B" title="C+ – tibeti" lang="bo" hreflang="bo" data-title="C+" data-language-autonym="བོད་ཡིག" data-language-local-name="tibeti" class="interlanguage-link-target"><span>བོད་ཡིག</span></a></li><li class="interlanguage-link interwiki-br mw-list-item"><a href="https://br.wikipedia.org/wiki/C%2B%2B" title="C++ – breton" lang="br" hreflang="br" data-title="C++" data-language-autonym="Brezhoneg" data-language-local-name="breton" class="interlanguage-link-target"><span>Brezhoneg</span></a></li><li class="interlanguage-link interwiki-bs mw-list-item"><a href="https://bs.wikipedia.org/wiki/C%2B%2B" title="C++ – bosnyák" lang="bs" hreflang="bs" data-title="C++" data-language-autonym="Bosanski" data-language-local-name="bosnyák" class="interlanguage-link-target"><span>Bosanski</span></a></li><li class="interlanguage-link interwiki-bug mw-list-item"><a href="https://bug.wikipedia.org/wiki/C%2B%2B" title="C++ – buginéz" lang="bug" hreflang="bug" data-title="C++" data-language-autonym="Basa Ugi" data-language-local-name="buginéz" class="interlanguage-link-target"><span>Basa Ugi</span></a></li><li class="interlanguage-link interwiki-ca mw-list-item"><a href="https://ca.wikipedia.org/wiki/C%2B%2B" title="C++ – katalán" lang="ca" hreflang="ca" data-title="C++" data-language-autonym="Català" data-language-local-name="katalán" class="interlanguage-link-target"><span>Català</span></a></li><li class="interlanguage-link interwiki-ckb mw-list-item"><a href="https://ckb.wikipedia.org/wiki/%D8%B3%DB%8C%2B%2B" title="سی++ – közép-ázsiai kurd" lang="ckb" hreflang="ckb" data-title="سی++" data-language-autonym="کوردی" data-language-local-name="közép-ázsiai kurd" class="interlanguage-link-target"><span>کوردی</span></a></li><li class="interlanguage-link interwiki-cs mw-list-item"><a href="https://cs.wikipedia.org/wiki/C%2B%2B" title="C++ – cseh" lang="cs" hreflang="cs" data-title="C++" data-language-autonym="Čeština" data-language-local-name="cseh" class="interlanguage-link-target"><span>Čeština</span></a></li><li class="interlanguage-link interwiki-cv mw-list-item"><a href="https://cv.wikipedia.org/wiki/C%2B%2B" title="C++ – csuvas" lang="cv" hreflang="cv" data-title="C++" data-language-autonym="Чӑвашла" data-language-local-name="csuvas" class="interlanguage-link-target"><span>Чӑвашла</span></a></li><li class="interlanguage-link interwiki-da mw-list-item"><a href="https://da.wikipedia.org/wiki/C%2B%2B" title="C++ – dán" lang="da" hreflang="da" data-title="C++" data-language-autonym="Dansk" data-language-local-name="dán" class="interlanguage-link-target"><span>Dansk</span></a></li><li class="interlanguage-link interwiki-de mw-list-item"><a href="https://de.wikipedia.org/wiki/C%2B%2B" title="C++ – német" lang="de" hreflang="de" data-title="C++" data-language-autonym="Deutsch" data-language-local-name="német" class="interlanguage-link-target"><span>Deutsch</span></a></li><li class="interlanguage-link interwiki-el mw-list-item"><a href="https://el.wikipedia.org/wiki/C%2B%2B" title="C++ – görög" lang="el" hreflang="el" data-title="C++" data-language-autonym="Ελληνικά" data-language-local-name="görög" class="interlanguage-link-target"><span>Ελληνικά</span></a></li><li class="interlanguage-link interwiki-eo mw-list-item"><a href="https://eo.wikipedia.org/wiki/C%2B%2B" title="C++ – eszperantó" lang="eo" hreflang="eo" data-title="C++" data-language-autonym="Esperanto" data-language-local-name="eszperantó" class="interlanguage-link-target"><span>Esperanto</span></a></li><li class="interlanguage-link interwiki-es mw-list-item"><a href="https://es.wikipedia.org/wiki/C%2B%2B" title="C++ – spanyol" lang="es" hreflang="es" data-title="C++" data-language-autonym="Español" data-language-local-name="spanyol" class="interlanguage-link-target"><span>Español</span></a></li><li class="interlanguage-link interwiki-et mw-list-item"><a href="https://et.wikipedia.org/wiki/C%2B%2B" title="C++ – észt" lang="et" hreflang="et" data-title="C++" data-language-autonym="Eesti" data-language-local-name="észt" class="interlanguage-link-target"><span>Eesti</span></a></li><li class="interlanguage-link interwiki-eu mw-list-item"><a href="https://eu.wikipedia.org/wiki/C%2B%2B" title="C++ – baszk" lang="eu" hreflang="eu" data-title="C++" data-language-autonym="Euskara" data-language-local-name="baszk" class="interlanguage-link-target"><span>Euskara</span></a></li><li class="interlanguage-link interwiki-fa mw-list-item"><a href="https://fa.wikipedia.org/wiki/C%2B%2B" title="C++ – perzsa" lang="fa" hreflang="fa" data-title="C++" data-language-autonym="فارسی" data-language-local-name="perzsa" class="interlanguage-link-target"><span>فارسی</span></a></li><li class="interlanguage-link interwiki-fi mw-list-item"><a href="https://fi.wikipedia.org/wiki/C%2B%2B" title="C++ – finn" lang="fi" hreflang="fi" data-title="C++" data-language-autonym="Suomi" data-language-local-name="finn" class="interlanguage-link-target"><span>Suomi</span></a></li><li class="interlanguage-link interwiki-fj mw-list-item"><a href="https://fj.wikipedia.org/wiki/C%2B%2B" title="C++ – fidzsi" lang="fj" hreflang="fj" data-title="C++" data-language-autonym="Na Vosa Vakaviti" data-language-local-name="fidzsi" class="interlanguage-link-target"><span>Na Vosa Vakaviti</span></a></li><li class="interlanguage-link interwiki-fr mw-list-item"><a href="https://fr.wikipedia.org/wiki/C%2B%2B" title="C++ – francia" lang="fr" hreflang="fr" data-title="C++" data-language-autonym="Français" data-language-local-name="francia" class="interlanguage-link-target"><span>Français</span></a></li><li class="interlanguage-link interwiki-ga mw-list-item"><a href="https://ga.wikipedia.org/wiki/C%2B%2B" title="C++ – ír" lang="ga" hreflang="ga" data-title="C++" data-language-autonym="Gaeilge" data-language-local-name="ír" class="interlanguage-link-target"><span>Gaeilge</span></a></li><li class="interlanguage-link interwiki-gan mw-list-item"><a href="https://gan.wikipedia.org/wiki/C%2B%2B" title="C++ – gan kínai" lang="gan" hreflang="gan" data-title="C++" data-language-autonym="贛語" data-language-local-name="gan kínai" class="interlanguage-link-target"><span>贛語</span></a></li><li class="interlanguage-link interwiki-gl mw-list-item"><a href="https://gl.wikipedia.org/wiki/C%2B%2B" title="C++ – gallego" lang="gl" hreflang="gl" data-title="C++" data-language-autonym="Galego" data-language-local-name="gallego" class="interlanguage-link-target"><span>Galego</span></a></li><li class="interlanguage-link interwiki-gu mw-list-item"><a href="https://gu.wikipedia.org/wiki/C%2B%2B(%E0%AA%AA%E0%AB%8D%E0%AA%B0%E0%AB%8B%E0%AA%97%E0%AB%8D%E0%AA%B0%E0%AA%BE%E0%AA%AE%E0%AA%BF%E0%AA%82%E0%AA%97_%E0%AA%AD%E0%AA%BE%E0%AA%B7%E0%AA%BE)" title="C++(પ્રોગ્રામિંગ ભાષા) – gudzsaráti" lang="gu" hreflang="gu" data-title="C++(પ્રોગ્રામિંગ ભાષા)" data-language-autonym="ગુજરાતી" data-language-local-name="gudzsaráti" class="interlanguage-link-target"><span>ગુજરાતી</span></a></li><li class="interlanguage-link interwiki-ha mw-list-item"><a href="https://ha.wikipedia.org/wiki/C%2B%2B" title="C++ – hausza" lang="ha" hreflang="ha" data-title="C++" data-language-autonym="Hausa" data-language-local-name="hausza" class="interlanguage-link-target"><span>Hausa</span></a></li><li class="interlanguage-link interwiki-he mw-list-item"><a href="https://he.wikipedia.org/wiki/C%2B%2B" title="C++ – héber" lang="he" hreflang="he" data-title="C++" data-language-autonym="עברית" data-language-local-name="héber" class="interlanguage-link-target"><span>עברית</span></a></li><li class="interlanguage-link interwiki-hi mw-list-item"><a href="https://hi.wikipedia.org/wiki/%E0%A4%B8%E0%A5%80%2B%2B" title="सी++ – hindi" lang="hi" hreflang="hi" data-title="सी++" data-language-autonym="हिन्दी" data-language-local-name="hindi" class="interlanguage-link-target"><span>हिन्दी</span></a></li><li class="interlanguage-link interwiki-hr mw-list-item"><a href="https://hr.wikipedia.org/wiki/C%2B%2B" title="C++ – horvát" lang="hr" hreflang="hr" data-title="C++" data-language-autonym="Hrvatski" data-language-local-name="horvát" class="interlanguage-link-target"><span>Hrvatski</span></a></li><li class="interlanguage-link interwiki-hy mw-list-item"><a href="https://hy.wikipedia.org/wiki/C%2B%2B" title="C++ – örmény" lang="hy" hreflang="hy" data-title="C++" data-language-autonym="Հայերեն" data-language-local-name="örmény" class="interlanguage-link-target"><span>Հայերեն</span></a></li><li class="interlanguage-link interwiki-ia mw-list-item"><a href="https://ia.wikipedia.org/wiki/C%2B%2B" title="C++ – interlingva" lang="ia" hreflang="ia" data-title="C++" data-language-autonym="Interlingua" data-language-local-name="interlingva" class="interlanguage-link-target"><span>Interlingua</span></a></li><li class="interlanguage-link interwiki-id mw-list-item"><a href="https://id.wikipedia.org/wiki/C%2B%2B" title="C++ – indonéz" lang="id" hreflang="id" data-title="C++" data-language-autonym="Bahasa Indonesia" data-language-local-name="indonéz" class="interlanguage-link-target"><span>Bahasa Indonesia</span></a></li><li class="interlanguage-link interwiki-io mw-list-item"><a href="https://io.wikipedia.org/wiki/C%2B%2B" title="C++ – idó" lang="io" hreflang="io" data-title="C++" data-language-autonym="Ido" data-language-local-name="idó" class="interlanguage-link-target"><span>Ido</span></a></li><li class="interlanguage-link interwiki-is mw-list-item"><a href="https://is.wikipedia.org/wiki/C%2B%2B" title="C++ – izlandi" lang="is" hreflang="is" data-title="C++" data-language-autonym="Íslenska" data-language-local-name="izlandi" class="interlanguage-link-target"><span>Íslenska</span></a></li><li class="interlanguage-link interwiki-it mw-list-item"><a href="https://it.wikipedia.org/wiki/C%2B%2B" title="C++ – olasz" lang="it" hreflang="it" data-title="C++" data-language-autonym="Italiano" data-language-local-name="olasz" class="interlanguage-link-target"><span>Italiano</span></a></li><li class="interlanguage-link interwiki-ja mw-list-item"><a href="https://ja.wikipedia.org/wiki/C%2B%2B" title="C++ – japán" lang="ja" hreflang="ja" data-title="C++" data-language-autonym="日本語" data-language-local-name="japán" class="interlanguage-link-target"><span>日本語</span></a></li><li class="interlanguage-link interwiki-jv mw-list-item"><a href="https://jv.wikipedia.org/wiki/C%2B%2B" title="C++ – jávai" lang="jv" hreflang="jv" data-title="C++" data-language-autonym="Jawa" data-language-local-name="jávai" class="interlanguage-link-target"><span>Jawa</span></a></li><li class="interlanguage-link interwiki-ka mw-list-item"><a href="https://ka.wikipedia.org/wiki/C%2B%2B" title="C++ – grúz" lang="ka" hreflang="ka" data-title="C++" data-language-autonym="ქართული" data-language-local-name="grúz" class="interlanguage-link-target"><span>ქართული</span></a></li><li class="interlanguage-link interwiki-kaa mw-list-item"><a href="https://kaa.wikipedia.org/wiki/C%2B%2B" title="C++ – kara-kalpak" lang="kaa" hreflang="kaa" data-title="C++" data-language-autonym="Qaraqalpaqsha" data-language-local-name="kara-kalpak" class="interlanguage-link-target"><span>Qaraqalpaqsha</span></a></li><li class="interlanguage-link interwiki-kk mw-list-item"><a href="https://kk.wikipedia.org/wiki/C%2B%2B" title="C++ – kazah" lang="kk" hreflang="kk" data-title="C++" data-language-autonym="Қазақша" data-language-local-name="kazah" class="interlanguage-link-target"><span>Қазақша</span></a></li><li class="interlanguage-link interwiki-kn mw-list-item"><a href="https://kn.wikipedia.org/wiki/%E0%B2%B8%E0%B2%BF%2B%2B" title="ಸಿ++ – kannada" lang="kn" hreflang="kn" data-title="ಸಿ++" data-language-autonym="ಕನ್ನಡ" data-language-local-name="kannada" class="interlanguage-link-target"><span>ಕನ್ನಡ</span></a></li><li class="interlanguage-link interwiki-ko mw-list-item"><a href="https://ko.wikipedia.org/wiki/C%2B%2B" title="C++ – koreai" lang="ko" hreflang="ko" data-title="C++" data-language-autonym="한국어" data-language-local-name="koreai" class="interlanguage-link-target"><span>한국어</span></a></li><li class="interlanguage-link interwiki-ky mw-list-item"><a href="https://ky.wikipedia.org/wiki/C%2B%2B" title="C++ – kirgiz" lang="ky" hreflang="ky" data-title="C++" data-language-autonym="Кыргызча" data-language-local-name="kirgiz" class="interlanguage-link-target"><span>Кыргызча</span></a></li><li class="interlanguage-link interwiki-la mw-list-item"><a href="https://la.wikipedia.org/wiki/C%2B%2B" title="C++ – latin" lang="la" hreflang="la" data-title="C++" data-language-autonym="Latina" data-language-local-name="latin" class="interlanguage-link-target"><span>Latina</span></a></li><li class="interlanguage-link interwiki-lb mw-list-item"><a href="https://lb.wikipedia.org/wiki/C%2B%2B" title="C++ – luxemburgi" lang="lb" hreflang="lb" data-title="C++" data-language-autonym="Lëtzebuergesch" data-language-local-name="luxemburgi" class="interlanguage-link-target"><span>Lëtzebuergesch</span></a></li><li class="interlanguage-link interwiki-lmo mw-list-item"><a href="https://lmo.wikipedia.org/wiki/C%2B%2B" title="C++ – lombard" lang="lmo" hreflang="lmo" data-title="C++" data-language-autonym="Lombard" data-language-local-name="lombard" class="interlanguage-link-target"><span>Lombard</span></a></li><li class="interlanguage-link interwiki-lt mw-list-item"><a href="https://lt.wikipedia.org/wiki/C%2B%2B" title="C++ – litván" lang="lt" hreflang="lt" data-title="C++" data-language-autonym="Lietuvių" data-language-local-name="litván" class="interlanguage-link-target"><span>Lietuvių</span></a></li><li class="interlanguage-link interwiki-lv mw-list-item"><a href="https://lv.wikipedia.org/wiki/C%2B%2B" title="C++ – lett" lang="lv" hreflang="lv" data-title="C++" data-language-autonym="Latviešu" data-language-local-name="lett" class="interlanguage-link-target"><span>Latviešu</span></a></li><li class="interlanguage-link interwiki-min mw-list-item"><a href="https://min.wikipedia.org/wiki/C%2B%2B" title="C++ – minangkabau" lang="min" hreflang="min" data-title="C++" data-language-autonym="Minangkabau" data-language-local-name="minangkabau" class="interlanguage-link-target"><span>Minangkabau</span></a></li><li class="interlanguage-link interwiki-mk mw-list-item"><a href="https://mk.wikipedia.org/wiki/C%2B%2B" title="C++ – macedón" lang="mk" hreflang="mk" data-title="C++" data-language-autonym="Македонски" data-language-local-name="macedón" class="interlanguage-link-target"><span>Македонски</span></a></li><li class="interlanguage-link interwiki-ml mw-list-item"><a href="https://ml.wikipedia.org/wiki/%E0%B4%B8%E0%B4%BF%2B%2B" title="സി++ – malajálam" lang="ml" hreflang="ml" data-title="സി++" data-language-autonym="മലയാളം" data-language-local-name="malajálam" class="interlanguage-link-target"><span>മലയാളം</span></a></li><li class="interlanguage-link interwiki-mn mw-list-item"><a href="https://mn.wikipedia.org/wiki/C%2B%2B" title="C++ – mongol" lang="mn" hreflang="mn" data-title="C++" data-language-autonym="Монгол" data-language-local-name="mongol" class="interlanguage-link-target"><span>Монгол</span></a></li><li class="interlanguage-link interwiki-mr mw-list-item"><a href="https://mr.wikipedia.org/wiki/%E0%A4%B8%E0%A5%80%2B%2B" title="सी++ – maráthi" lang="mr" hreflang="mr" data-title="सी++" data-language-autonym="मराठी" data-language-local-name="maráthi" class="interlanguage-link-target"><span>मराठी</span></a></li><li class="interlanguage-link interwiki-ms mw-list-item"><a href="https://ms.wikipedia.org/wiki/C%2B%2B" title="C++ – maláj" lang="ms" hreflang="ms" data-title="C++" data-language-autonym="Bahasa Melayu" data-language-local-name="maláj" class="interlanguage-link-target"><span>Bahasa Melayu</span></a></li><li class="interlanguage-link interwiki-my mw-list-item"><a href="https://my.wikipedia.org/wiki/C%2B%2B" title="C++ – burmai" lang="my" hreflang="my" data-title="C++" data-language-autonym="မြန်မာဘာသာ" data-language-local-name="burmai" class="interlanguage-link-target"><span>မြန်မာဘာသာ</span></a></li><li class="interlanguage-link interwiki-new mw-list-item"><a href="https://new.wikipedia.org/wiki/%E0%A4%B8%E0%A5%80%2B%2B" title="सी++ – nevari" lang="new" hreflang="new" data-title="सी++" data-language-autonym="नेपाल भाषा" data-language-local-name="nevari" class="interlanguage-link-target"><span>नेपाल भाषा</span></a></li><li class="interlanguage-link interwiki-nl mw-list-item"><a href="https://nl.wikipedia.org/wiki/C%2B%2B" title="C++ – holland" lang="nl" hreflang="nl" data-title="C++" data-language-autonym="Nederlands" data-language-local-name="holland" class="interlanguage-link-target"><span>Nederlands</span></a></li><li class="interlanguage-link interwiki-nn mw-list-item"><a href="https://nn.wikipedia.org/wiki/C%2B%2B" title="C++ – norvég (nynorsk)" lang="nn" hreflang="nn" data-title="C++" data-language-autonym="Norsk nynorsk" data-language-local-name="norvég (nynorsk)" class="interlanguage-link-target"><span>Norsk nynorsk</span></a></li><li class="interlanguage-link interwiki-no mw-list-item"><a href="https://no.wikipedia.org/wiki/C%2B%2B" title="C++ – norvég (bokmål)" lang="nb" hreflang="nb" data-title="C++" data-language-autonym="Norsk bokmål" data-language-local-name="norvég (bokmål)" class="interlanguage-link-target"><span>Norsk bokmål</span></a></li><li class="interlanguage-link interwiki-oc mw-list-item"><a href="https://oc.wikipedia.org/wiki/C%2B%2B" title="C++ – okszitán" lang="oc" hreflang="oc" data-title="C++" data-language-autonym="Occitan" data-language-local-name="okszitán" class="interlanguage-link-target"><span>Occitan</span></a></li><li class="interlanguage-link interwiki-pa mw-list-item"><a href="https://pa.wikipedia.org/wiki/%E0%A8%B8%E0%A9%80%2B%2B" title="ਸੀ++ – pandzsábi" lang="pa" hreflang="pa" data-title="ਸੀ++" data-language-autonym="ਪੰਜਾਬੀ" data-language-local-name="pandzsábi" class="interlanguage-link-target"><span>ਪੰਜਾਬੀ</span></a></li><li class="interlanguage-link interwiki-pfl mw-list-item"><a href="https://pfl.wikipedia.org/wiki/C%2B%2B" title="C++ – Palatine German" lang="pfl" hreflang="pfl" data-title="C++" data-language-autonym="Pälzisch" data-language-local-name="Palatine German" class="interlanguage-link-target"><span>Pälzisch</span></a></li><li class="interlanguage-link interwiki-pl mw-list-item"><a href="https://pl.wikipedia.org/wiki/C%2B%2B" title="C++ – lengyel" lang="pl" hreflang="pl" data-title="C++" data-language-autonym="Polski" data-language-local-name="lengyel" class="interlanguage-link-target"><span>Polski</span></a></li><li class="interlanguage-link interwiki-pnb mw-list-item"><a href="https://pnb.wikipedia.org/wiki/%D8%B3%DB%8C%2B%2B" title="سی++ – Western Punjabi" lang="pnb" hreflang="pnb" data-title="سی++" data-language-autonym="پنجابی" data-language-local-name="Western Punjabi" class="interlanguage-link-target"><span>پنجابی</span></a></li><li class="interlanguage-link interwiki-pt mw-list-item"><a href="https://pt.wikipedia.org/wiki/C%2B%2B" title="C++ – portugál" lang="pt" hreflang="pt" data-title="C++" data-language-autonym="Português" data-language-local-name="portugál" class="interlanguage-link-target"><span>Português</span></a></li><li class="interlanguage-link interwiki-qu mw-list-item"><a href="https://qu.wikipedia.org/wiki/C%2B%2B" title="C++ – kecsua" lang="qu" hreflang="qu" data-title="C++" data-language-autonym="Runa Simi" data-language-local-name="kecsua" class="interlanguage-link-target"><span>Runa Simi</span></a></li><li class="interlanguage-link interwiki-ro mw-list-item"><a href="https://ro.wikipedia.org/wiki/C%2B%2B" title="C++ – román" lang="ro" hreflang="ro" data-title="C++" data-language-autonym="Română" data-language-local-name="román" class="interlanguage-link-target"><span>Română</span></a></li><li class="interlanguage-link interwiki-ru mw-list-item"><a href="https://ru.wikipedia.org/wiki/C%2B%2B" title="C++ – orosz" lang="ru" hreflang="ru" data-title="C++" data-language-autonym="Русский" data-language-local-name="orosz" class="interlanguage-link-target"><span>Русский</span></a></li><li class="interlanguage-link interwiki-rue mw-list-item"><a href="https://rue.wikipedia.org/wiki/C%2B%2B" title="C++ – Rusyn" lang="rue" hreflang="rue" data-title="C++" data-language-autonym="Русиньскый" data-language-local-name="Rusyn" class="interlanguage-link-target"><span>Русиньскый</span></a></li><li class="interlanguage-link interwiki-sah mw-list-item"><a href="https://sah.wikipedia.org/wiki/C%2B%2B" title="C++ – szaha" lang="sah" hreflang="sah" data-title="C++" data-language-autonym="Саха тыла" data-language-local-name="szaha" class="interlanguage-link-target"><span>Саха тыла</span></a></li><li class="interlanguage-link interwiki-sh mw-list-item"><a href="https://sh.wikipedia.org/wiki/C%2B%2B" title="C++ – szerbhorvát" lang="sh" hreflang="sh" data-title="C++" data-language-autonym="Srpskohrvatski / српскохрватски" data-language-local-name="szerbhorvát" class="interlanguage-link-target"><span>Srpskohrvatski / српскохрватски</span></a></li><li class="interlanguage-link interwiki-si mw-list-item"><a href="https://si.wikipedia.org/wiki/C%2B%2B" title="C++ – szingaléz" lang="si" hreflang="si" data-title="C++" data-language-autonym="සිංහල" data-language-local-name="szingaléz" class="interlanguage-link-target"><span>සිංහල</span></a></li><li class="interlanguage-link interwiki-simple mw-list-item"><a href="https://simple.wikipedia.org/wiki/C%2B%2B" title="C++ – Simple English" lang="en-simple" hreflang="en-simple" data-title="C++" data-language-autonym="Simple English" data-language-local-name="Simple English" class="interlanguage-link-target"><span>Simple English</span></a></li><li class="interlanguage-link interwiki-sk mw-list-item"><a href="https://sk.wikipedia.org/wiki/C%2B%2B" title="C++ – szlovák" lang="sk" hreflang="sk" data-title="C++" data-language-autonym="Slovenčina" data-language-local-name="szlovák" class="interlanguage-link-target"><span>Slovenčina</span></a></li><li class="interlanguage-link interwiki-sl mw-list-item"><a href="https://sl.wikipedia.org/wiki/C%2B%2B" title="C++ – szlovén" lang="sl" hreflang="sl" data-title="C++" data-language-autonym="Slovenščina" data-language-local-name="szlovén" class="interlanguage-link-target"><span>Slovenščina</span></a></li><li class="interlanguage-link interwiki-sq mw-list-item"><a href="https://sq.wikipedia.org/wiki/C%2B%2B" title="C++ – albán" lang="sq" hreflang="sq" data-title="C++" data-language-autonym="Shqip" data-language-local-name="albán" class="interlanguage-link-target"><span>Shqip</span></a></li><li class="interlanguage-link interwiki-sr mw-list-item"><a href="https://sr.wikipedia.org/wiki/C%2B%2B" title="C++ – szerb" lang="sr" hreflang="sr" data-title="C++" data-language-autonym="Српски / srpski" data-language-local-name="szerb" class="interlanguage-link-target"><span>Српски / srpski</span></a></li><li class="interlanguage-link interwiki-sv mw-list-item"><a href="https://sv.wikipedia.org/wiki/C%2B%2B" title="C++ – svéd" lang="sv" hreflang="sv" data-title="C++" data-language-autonym="Svenska" data-language-local-name="svéd" class="interlanguage-link-target"><span>Svenska</span></a></li><li class="interlanguage-link interwiki-sw mw-list-item"><a href="https://sw.wikipedia.org/wiki/C%2B%2B" title="C++ – szuahéli" lang="sw" hreflang="sw" data-title="C++" data-language-autonym="Kiswahili" data-language-local-name="szuahéli" class="interlanguage-link-target"><span>Kiswahili</span></a></li><li class="interlanguage-link interwiki-ta mw-list-item"><a href="https://ta.wikipedia.org/wiki/%E0%AE%9A%E0%AE%BF%2B%2B" title="சி++ – tamil" lang="ta" hreflang="ta" data-title="சி++" data-language-autonym="தமிழ்" data-language-local-name="tamil" class="interlanguage-link-target"><span>தமிழ்</span></a></li><li class="interlanguage-link interwiki-te mw-list-item"><a href="https://te.wikipedia.org/wiki/%E0%B0%B8%E0%B1%80_%E0%B0%AA%E0%B1%8D%E0%B0%B2%E0%B0%B8%E0%B1%8D_%E0%B0%AA%E0%B1%8D%E0%B0%B2%E0%B0%B8%E0%B1%8D" title="సీ ప్లస్ ప్లస్ – telugu" lang="te" hreflang="te" data-title="సీ ప్లస్ ప్లస్" data-language-autonym="తెలుగు" data-language-local-name="telugu" class="interlanguage-link-target"><span>తెలుగు</span></a></li><li class="interlanguage-link interwiki-tg mw-list-item"><a href="https://tg.wikipedia.org/wiki/C%2B%2B" title="C++ – tadzsik" lang="tg" hreflang="tg" data-title="C++" data-language-autonym="Тоҷикӣ" data-language-local-name="tadzsik" class="interlanguage-link-target"><span>Тоҷикӣ</span></a></li><li class="interlanguage-link interwiki-th mw-list-item"><a href="https://th.wikipedia.org/wiki/%E0%B8%A0%E0%B8%B2%E0%B8%A9%E0%B8%B2%E0%B8%8B%E0%B8%B5%E0%B8%9E%E0%B8%A5%E0%B8%B1%E0%B8%AA%E0%B8%9E%E0%B8%A5%E0%B8%B1%E0%B8%AA" title="ภาษาซีพลัสพลัส – thai" lang="th" hreflang="th" data-title="ภาษาซีพลัสพลัส" data-language-autonym="ไทย" data-language-local-name="thai" class="interlanguage-link-target"><span>ไทย</span></a></li><li class="interlanguage-link interwiki-tk mw-list-item"><a href="https://tk.wikipedia.org/wiki/C%2B%2B_programmirleme" title="C++ programmirleme – türkmén" lang="tk" hreflang="tk" data-title="C++ programmirleme" data-language-autonym="Türkmençe" data-language-local-name="türkmén" class="interlanguage-link-target"><span>Türkmençe</span></a></li><li class="interlanguage-link interwiki-tr mw-list-item"><a href="https://tr.wikipedia.org/wiki/C%2B%2B" title="C++ – török" lang="tr" hreflang="tr" data-title="C++" data-language-autonym="Türkçe" data-language-local-name="török" class="interlanguage-link-target"><span>Türkçe</span></a></li><li class="interlanguage-link interwiki-tt mw-list-item"><a href="https://tt.wikipedia.org/wiki/C%2B%2B" title="C++ – tatár" lang="tt" hreflang="tt" data-title="C++" data-language-autonym="Татарча / tatarça" data-language-local-name="tatár" class="interlanguage-link-target"><span>Татарча / tatarça</span></a></li><li class="interlanguage-link interwiki-uk mw-list-item"><a href="https://uk.wikipedia.org/wiki/C%2B%2B" title="C++ – ukrán" lang="uk" hreflang="uk" data-title="C++" data-language-autonym="Українська" data-language-local-name="ukrán" class="interlanguage-link-target"><span>Українська</span></a></li><li class="interlanguage-link interwiki-ur mw-list-item"><a href="https://ur.wikipedia.org/wiki/%D8%B3%DB%8C%2B%2B" title="سی++ – urdu" lang="ur" hreflang="ur" data-title="سی++" data-language-autonym="اردو" data-language-local-name="urdu" class="interlanguage-link-target"><span>اردو</span></a></li><li class="interlanguage-link interwiki-uz mw-list-item"><a href="https://uz.wikipedia.org/wiki/C%2B%2B" title="C++ – üzbég" lang="uz" hreflang="uz" data-title="C++" data-language-autonym="Oʻzbekcha / ўзбекча" data-language-local-name="üzbég" class="interlanguage-link-target"><span>Oʻzbekcha / ўзбекча</span></a></li><li class="interlanguage-link interwiki-vi mw-list-item"><a href="https://vi.wikipedia.org/wiki/C%2B%2B" title="C++ – vietnámi" lang="vi" hreflang="vi" data-title="C++" data-language-autonym="Tiếng Việt" data-language-local-name="vietnámi" class="interlanguage-link-target"><span>Tiếng Việt</span></a></li><li class="interlanguage-link interwiki-war mw-list-item"><a href="https://war.wikipedia.org/wiki/C%2B%2B" title="C++ – varaó" lang="war" hreflang="war" data-title="C++" data-language-autonym="Winaray" data-language-local-name="varaó" class="interlanguage-link-target"><span>Winaray</span></a></li><li class="interlanguage-link interwiki-wuu mw-list-item"><a href="https://wuu.wikipedia.org/wiki/C%2B%2B" title="C++ – wu kínai" lang="wuu" hreflang="wuu" data-title="C++" data-language-autonym="吴语" data-language-local-name="wu kínai" class="interlanguage-link-target"><span>吴语</span></a></li><li class="interlanguage-link interwiki-yi mw-list-item"><a href="https://yi.wikipedia.org/wiki/%2B%2BC" title="++C – jiddis" lang="yi" hreflang="yi" data-title="++C" data-language-autonym="ייִדיש" data-language-local-name="jiddis" class="interlanguage-link-target"><span>ייִדיש</span></a></li><li class="interlanguage-link interwiki-yo mw-list-item"><a href="https://yo.wikipedia.org/wiki/C%2B%2B" title="C++ – joruba" lang="yo" hreflang="yo" data-title="C++" data-language-autonym="Yorùbá" data-language-local-name="joruba" class="interlanguage-link-target"><span>Yorùbá</span></a></li><li class="interlanguage-link interwiki-zh mw-list-item"><a href="https://zh.wikipedia.org/wiki/C%2B%2B" title="C++ – kínai" lang="zh" hreflang="zh" data-title="C++" data-language-autonym="中文" data-language-local-name="kínai" class="interlanguage-link-target"><span>中文</span></a></li><li class="interlanguage-link interwiki-zh-classical mw-list-item"><a href="https://zh-classical.wikipedia.org/wiki/%E4%B8%99%E5%8A%A0%E5%8A%A0" title="丙加加 – Literary Chinese" lang="lzh" hreflang="lzh" data-title="丙加加" data-language-autonym="文言" data-language-local-name="Literary Chinese" class="interlanguage-link-target"><span>文言</span></a></li><li class="interlanguage-link interwiki-zh-min-nan mw-list-item"><a href="https://zh-min-nan.wikipedia.org/wiki/C%2B%2B" title="C++ – min nan kínai" lang="nan" hreflang="nan" data-title="C++" data-language-autonym="閩南語 / Bân-lâm-gú" data-language-local-name="min nan kínai" class="interlanguage-link-target"><span>閩南語 / Bân-lâm-gú</span></a></li><li class="interlanguage-link interwiki-zh-yue mw-list-item"><a href="https://zh-yue.wikipedia.org/wiki/C%2B%2B" title="C++ – kantoni" lang="yue" hreflang="yue" data-title="C++" data-language-autonym="粵語" data-language-local-name="kantoni" class="interlanguage-link-target"><span>粵語</span></a></li> </ul> <div class="after-portlet after-portlet-lang"><span class="wb-langlinks-edit wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q2407#sitelinks-wikipedia" title="Nyelvközi hivatkozások szerkesztése" class="wbc-editpage">Hivatkozások szerkesztése</a></span></div> </div> </div> </div> </header> <div class="vector-page-toolbar"> <div class="vector-page-toolbar-container"> <div id="left-navigation"> <nav aria-label="Névterek"> <div id="p-associated-pages" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-associated-pages" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-main" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/C%2B%2B" title="A lap megtekintése [c]" accesskey="c"><span>Szócikk</span></a></li><li id="ca-talk" class="vector-tab-noicon mw-list-item"><a href="/wiki/Vita:C%2B%2B" rel="discussion" title="Az oldal tartalmának megvitatása [t]" accesskey="t"><span>Vitalap</span></a></li> </ul> </div> </div> <div id="vector-variants-dropdown" class="vector-dropdown emptyPortlet" > <input type="checkbox" id="vector-variants-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-variants-dropdown" class="vector-dropdown-checkbox " aria-label="Nyelvvariáns váltása" > <label id="vector-variants-dropdown-label" for="vector-variants-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">magyar</span> </label> <div class="vector-dropdown-content"> <div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> </div> </div> </nav> </div> <div id="right-navigation" class="vector-collapsible"> <nav aria-label="Nézetek"> <div id="p-views" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-views" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/C%2B%2B"><span>Olvasás</span></a></li><li id="ca-edit" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=C%2B%2B&amp;action=edit" title="Az oldal forráskódjának szerkesztése [e]" accesskey="e"><span>Szerkesztés</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=C%2B%2B&amp;action=history" title="A lap korábbi változatai [h]" accesskey="h"><span>Laptörténet</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="Oldal eszközök"> <div id="vector-page-tools-dropdown" class="vector-dropdown vector-page-tools-dropdown" > <input type="checkbox" id="vector-page-tools-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-tools-dropdown" class="vector-dropdown-checkbox " aria-label="Eszközök" > <label id="vector-page-tools-dropdown-label" for="vector-page-tools-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">Eszközök</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-tools-unpinned-container" class="vector-unpinned-container"> <div id="vector-page-tools" class="vector-page-tools vector-pinnable-element"> <div class="vector-pinnable-header vector-page-tools-pinnable-header vector-pinnable-header-unpinned" data-feature-name="page-tools-pinned" data-pinnable-element-id="vector-page-tools" data-pinned-container-id="vector-page-tools-pinned-container" data-unpinned-container-id="vector-page-tools-unpinned-container" > <div class="vector-pinnable-header-label">Eszközök</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">áthelyezés az oldalsávba</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">elrejtés</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="További lehetőségek" > <div class="vector-menu-heading"> Műveletek </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-more-view" class="selected vector-more-collapsible-item mw-list-item"><a href="/wiki/C%2B%2B"><span>Olvasás</span></a></li><li id="ca-more-edit" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=C%2B%2B&amp;action=edit" title="Az oldal forráskódjának szerkesztése [e]" accesskey="e"><span>Szerkesztés</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=C%2B%2B&amp;action=history"><span>Laptörténet</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> Általános </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Speci%C3%A1lis:Mi_hivatkozik_erre/C%2B%2B" title="Az erre a lapra hivatkozó más lapok listája [j]" accesskey="j"><span>Mi hivatkozik erre?</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Speci%C3%A1lis:Kapcsol%C3%B3d%C3%B3_v%C3%A1ltoztat%C3%A1sok/C%2B%2B" rel="nofollow" title="Az erről a lapról hivatkozott lapok utolsó változtatásai [k]" accesskey="k"><span>Kapcsolódó változtatások</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=C%2B%2B&amp;oldid=27055180" title="Állandó hivatkozás ezen lap ezen változatához"><span>Hivatkozás erre a változatra</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=C%2B%2B&amp;action=info" title="További információk erről a lapról"><span>Lapinformációk</span></a></li><li id="t-cite" class="mw-list-item"><a href="/w/index.php?title=Speci%C3%A1lis:Hivatkoz%C3%A1s&amp;page=C%2B%2B&amp;id=27055180&amp;wpFormIdentifier=titleform" title="Információk a lap idézésével kapcsolatban"><span>Hogyan hivatkozz erre a lapra?</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Speci%C3%A1lis:UrlShortener&amp;url=https%3A%2F%2Fhu.wikipedia.org%2Fwiki%2FC%252B%252B"><span>Rövidített URL készítése</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Speci%C3%A1lis:QrCode&amp;url=https%3A%2F%2Fhu.wikipedia.org%2Fwiki%2FC%252B%252B"><span>QR-kód letöltése</span></a></li> </ul> </div> </div> <div id="p-coll-print_export" class="vector-menu mw-portlet mw-portlet-coll-print_export" > <div class="vector-menu-heading"> Nyomtatás/​exportálás </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="coll-create_a_book" class="mw-list-item"><a href="/w/index.php?title=Speci%C3%A1lis:K%C3%B6nyv&amp;bookcmd=book_creator&amp;referer=C%2B%2B"><span>Könyv készítése</span></a></li><li id="coll-download-as-rl" class="mw-list-item"><a href="/w/index.php?title=Speci%C3%A1lis:DownloadAsPdf&amp;page=C%2B%2B&amp;action=show-download-screen"><span>Letöltés PDF-ként</span></a></li><li id="t-print" class="mw-list-item"><a href="/w/index.php?title=C%2B%2B&amp;printable=yes" title="A lap nyomtatható változata [p]" accesskey="p"><span>Nyomtatható változat</span></a></li> </ul> </div> </div> <div id="p-wikibase-otherprojects" class="vector-menu mw-portlet mw-portlet-wikibase-otherprojects" > <div class="vector-menu-heading"> Társprojektek </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="wb-otherproject-link wb-otherproject-commons mw-list-item"><a href="https://commons.wikimedia.org/wiki/Category:C%2B%2B" hreflang="en"><span>Wikimédia Commons</span></a></li><li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q2407" title="Kapcsolt adattárelem [g]" accesskey="g"><span>Wikidata-adatlap</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> </div> </div> </div> <div class="vector-column-end"> <div class="vector-sticky-pinned-container"> <nav class="vector-page-tools-landmark" aria-label="Oldal eszközök"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="Megjelenés"> <div id="vector-appearance-pinned-container" class="vector-pinned-container"> <div id="vector-appearance" class="vector-appearance vector-pinnable-element"> <div class="vector-pinnable-header vector-appearance-pinnable-header vector-pinnable-header-pinned" data-feature-name="appearance-pinned" data-pinnable-element-id="vector-appearance" data-pinned-container-id="vector-appearance-pinned-container" data-unpinned-container-id="vector-appearance-unpinned-container" > <div class="vector-pinnable-header-label">Megjelenés</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">áthelyezés az oldalsávba</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">elrejtés</button> </div> </div> </div> </nav> </div> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div class="mw-indicators"> <div id="mw-indicator-indicator-fr-review-status" class="mw-indicator"><indicator name="fr-review-status" class="mw-fr-review-status-indicator" id="mw-fr-revision-toggle"><span class="cdx-fr-css-icon-review--status--stable"></span><b>Ellenőrzött</b></indicator></div> </div> <div id="siteSub" class="noprint">A Wikipédiából, a szabad enciklopédiából</div> </div> <div id="contentSub"><div id="mw-content-subtitle"><div id="mw-fr-revision-messages"><div id="mw-fr-revision-details" class="mw-fr-revision-details-dialog" style="display:none;"><div tabindex="0"></div><div class="cdx-dialog cdx-dialog--horizontal-actions"><header class="cdx-dialog__header cdx-dialog__header--default"><div class="cdx-dialog__header__title-group"><h2 class="cdx-dialog__header__title">Változat állapota</h2><p class="cdx-dialog__header__subtitle">Ez a lap egy ellenőrzött változata</p></div><button class="cdx-button cdx-button--action-default cdx-button--weight-quiet&#10;&#9;&#9;&#9;&#9;&#9;&#9;&#9;cdx-button--size-medium cdx-button--icon-only cdx-dialog__header__close-button" aria-label="Close" onclick="document.getElementById(&quot;mw-fr-revision-details&quot;).style.display = &quot;none&quot;;" type="submit"><span class="cdx-icon cdx-icon--medium&#10;&#9;&#9;&#9;&#9;&#9;&#9;&#9;cdx-fr-css-icon--close"></span></button></header><div class="cdx-dialog__body">Ez a <a href="/wiki/Wikip%C3%A9dia:Jel%C3%B6lt_lapv%C3%A1ltozatok" title="Wikipédia:Jelölt lapváltozatok">közzétett változat</a>, <a class="external text" href="https://hu.wikipedia.org/w/index.php?title=Speci%C3%A1lis:Rendszernapl%C3%B3k&amp;type=review&amp;page=C%2B%2B">ellenőrizve</a>: <i>2024. április 12.</i><p><table id="mw-fr-revisionratings-box" class="flaggedrevs-color-1" style="margin: auto;" cellpadding="0"><tr><td class="fr-text" style="vertical-align: middle;">Pontosság</td><td class="fr-value40" style="vertical-align: middle;">ellenőrzött</td></tr></table></p></div></div><div tabindex="0"></div></div></div></div></div> <div id="mw-content-text" class="mw-body-content"><div class="mw-content-ltr mw-parser-output" lang="hu" dir="ltr"><table class="infobox ujinfobox"> <tbody><tr><td colspan="2" class="fejlec videojatekinfobox" style="color:black;background-color:#FFCC66;">C++</td></tr><tr><td colspan="2" style="text-align:center"><span typeof="mw:File"><a href="/wiki/F%C3%A1jl:ISO_C%2B%2B_Logo.svg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/1/18/ISO_C%2B%2B_Logo.svg/150px-ISO_C%2B%2B_Logo.svg.png" decoding="async" width="150" height="169" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/1/18/ISO_C%2B%2B_Logo.svg/225px-ISO_C%2B%2B_Logo.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/1/18/ISO_C%2B%2B_Logo.svg/300px-ISO_C%2B%2B_Logo.svg.png 2x" data-file-width="306" data-file-height="344" /></a></span></td></tr><tr><td colspan="2"><hr style="color:#FFCC66;background-color:#FFCC66;" /></td></tr><tr valign="top"><td class="cimke" style="padding:0px 3px 0px 0px;"><b><a href="/wiki/Programoz%C3%A1si_paradigma" title="Programozási paradigma">Paradigma</a></b></td><td><a href="/wiki/T%C3%B6bbelv%C5%B1_programoz%C3%A1si_nyelvek" title="Többelvű programozási nyelvek">többelvű</a>: generikus, <a href="/wiki/Objektumorient%C3%A1lt_programoz%C3%A1s" title="Objektumorientált programozás">objektumorientált</a>, imperatív</td></tr><tr valign="top"><td class="cimke" style="padding:0px 3px 0px 0px;"><b><a href="/wiki/F%C3%A1jlkiterjeszt%C3%A9s" title="Fájlkiterjesztés">Jellemző kiterjesztés</a></b></td><td>.h, .hh, .hpp, .hxx, .h++, .cc, .cpp, .cxx, .c++</td></tr><tr valign="top"><td class="cimke" style="padding:0px 3px 0px 0px;"><b>Megjelent</b></td><td>1983</td></tr><tr valign="top"><td class="cimke" style="padding:0px 3px 0px 0px;"><b>Tervező</b></td><td><a href="/wiki/Bjarne_Stroustrup" title="Bjarne Stroustrup">Bjarne Stroustrup</a></td></tr><tr valign="top"><td class="cimke" style="padding:0px 3px 0px 0px;"><b><a href="/wiki/Szoftverfejleszt%C5%91" title="Szoftverfejlesztő">Fejlesztő</a></b></td><td><a href="/wiki/Bjarne_Stroustrup" title="Bjarne Stroustrup">Bjarne Stroustrup</a></td></tr><tr valign="top"><td class="cimke" style="padding:0px 3px 0px 0px;"><b><a href="/wiki/A_szoftverkiad%C3%A1s_%C3%A9letciklusa" title="A szoftverkiadás életciklusa">Utolsó kiadás</a></b></td><td style="padding:0px 0px; vertical-align: baseline;">2020, ISO/IEC 14882:2020 </td></tr><tr valign="top"><td class="cimke" style="padding:0px 3px 0px 0px;"><b><a href="/wiki/Adatt%C3%ADpus" title="Adattípus">Típusosság</a></b></td><td>statikus típusosság, erősen típusos, nem típus biztos, nominatív</td></tr><tr valign="top"><td class="cimke" style="padding:0px 3px 0px 0px;"><b><a href="/wiki/Ford%C3%ADt%C3%B3program" title="Fordítóprogram">Fordítóprogram</a></b></td><td><a href="/wiki/GNU_Compiler_Collection" class="mw-redirect" title="GNU Compiler Collection">GNU Compiler Collection</a>, <a href="/w/index.php?title=Microsoft_Visual_C%2B%2B&amp;action=edit&amp;redlink=1" class="new" title="Microsoft Visual C++ (a lap nem létezik)">Microsoft Visual C++</a>, <a href="/w/index.php?title=Borland_C%2B%2B_Builder&amp;action=edit&amp;redlink=1" class="new" title="Borland C++ Builder (a lap nem létezik)">Borland C++ Builder</a></td></tr><tr valign="top"><td class="cimke" style="padding:0px 3px 0px 0px;"><b>Dialektusok</b></td><td><a href="/w/index.php?title=ISO/IEC_14882&amp;action=edit&amp;redlink=1" class="new" title="ISO/IEC 14882 (a lap nem létezik)">ISO/IEC C++</a> 1998, <a href="/w/index.php?title=ISO/IEC_14882&amp;action=edit&amp;redlink=1" class="new" title="ISO/IEC 14882 (a lap nem létezik)">ISO/IEC C++</a> 2003, <a href="/w/index.php?title=ISO/IEC_14882&amp;action=edit&amp;redlink=1" class="new" title="ISO/IEC 14882 (a lap nem létezik)">ISO/IEC C++</a> 2011, <a href="/w/index.php?title=ISO/IEC_14882&amp;action=edit&amp;redlink=1" class="new" title="ISO/IEC 14882 (a lap nem létezik)">ISO/IEC C++</a> 2014, <a href="/w/index.php?title=ISO/IEC_14882&amp;action=edit&amp;redlink=1" class="new" title="ISO/IEC 14882 (a lap nem létezik)">ISO/IEC C++</a> 2017, <a href="/w/index.php?title=ISO/IEC_14882&amp;action=edit&amp;redlink=1" class="new" title="ISO/IEC 14882 (a lap nem létezik)">ISO/IEC C++</a> 2020</td></tr><tr valign="top"><td class="cimke" style="padding:0px 3px 0px 0px;"><b>Megvalósítások</b></td><td><a href="/w/index.php?title=C%2B%2B_Builder&amp;action=edit&amp;redlink=1" class="new" title="C++ Builder (a lap nem létezik)">C++ Builder</a>, <a href="/wiki/Clang" title="Clang">clang</a>, <a href="/w/index.php?title=Comeau_C/C%2B%2B&amp;action=edit&amp;redlink=1" class="new" title="Comeau C/C++ (a lap nem létezik)">Comeau C/C++</a>, <a href="/wiki/GNU_Compiler_Collection" class="mw-redirect" title="GNU Compiler Collection">GCC</a>, <a href="/w/index.php?title=Intel_C%2B%2B_Compiler&amp;action=edit&amp;redlink=1" class="new" title="Intel C++ Compiler (a lap nem létezik)">Intel C++ Compiler</a>, <a href="/w/index.php?title=Microsoft_Visual_C%2B%2B&amp;action=edit&amp;redlink=1" class="new" title="Microsoft Visual C++ (a lap nem létezik)">Microsoft Visual C++</a>, <a href="/w/index.php?title=Sun_Studio_(software)&amp;action=edit&amp;redlink=1" class="new" title="Sun Studio (software) (a lap nem létezik)">Sun Studio</a></td></tr><tr valign="top"><td class="cimke" style="padding:0px 3px 0px 0px;"><b>Hatással volt rá</b></td><td><a href="/wiki/C_(programoz%C3%A1si_nyelv)" title="C (programozási nyelv)">C</a>, <a href="/wiki/Simula" title="Simula">Simula</a>, <a href="/w/index.php?title=BCPL&amp;action=edit&amp;redlink=1" class="new" title="BCPL (a lap nem létezik)">BCPL</a>, <a href="/w/index.php?title=CLU&amp;action=edit&amp;redlink=1" class="new" title="CLU (a lap nem létezik)">CLU</a>, <a href="/wiki/ALGOL" title="ALGOL">Algol</a></td></tr><tr valign="top"><td class="cimke" style="padding:0px 3px 0px 0px;"><b>Befolyásolt nyelvek</b></td><td><a href="/wiki/C_Sharp" title="C Sharp">C#</a>, <a href="/wiki/Java_(programoz%C3%A1si_nyelv)" title="Java (programozási nyelv)">Java</a>, <a href="/wiki/PHP_programoz%C3%A1si_nyelv" class="mw-redirect" title="PHP programozási nyelv">PHP</a>, <a href="/wiki/Python_(programoz%C3%A1si_nyelv)" title="Python (programozási nyelv)">Python</a></td></tr><tr><td colspan="2" style="background-color:#FFCC66;text-align:center;"><a rel="nofollow" class="external text" href="https://isocpp.org/">Weboldal</a></td></tr></tbody></table> <p>A <b>C++</b> (ejtsd: cé plusz plusz) egy <a href="/wiki/%C3%81ltal%C3%A1nos_c%C3%A9l%C3%BA_programoz%C3%A1si_nyelv" title="Általános célú programozási nyelv">általános célú</a>, magas szintű <a href="/wiki/Programoz%C3%A1si_nyelv" title="Programozási nyelv">programozási nyelv</a>. Támogatja a <a href="/wiki/Procedur%C3%A1lis_programoz%C3%A1s" title="Procedurális programozás">procedurális</a>, az <a href="/wiki/Objektumorient%C3%A1lt_programoz%C3%A1s" title="Objektumorientált programozás">objektumorientált</a> és a <a href="/wiki/Generikus_programoz%C3%A1s" title="Generikus programozás">generikus programozást</a>, valamint az <a href="/w/index.php?title=Adatabsztrakci%C3%B3&amp;action=edit&amp;redlink=1" class="new" title="Adatabsztrakció (a lap nem létezik)">adatabsztrakciót</a>. Napjainkban szinte minden <a href="/wiki/Oper%C3%A1ci%C3%B3s_rendszer" title="Operációs rendszer">operációs rendszer</a> alá létezik C++ <a href="/wiki/Ford%C3%ADt%C3%B3program" title="Fordítóprogram">fordító</a>. A nyelv a <a href="/wiki/C_(programoz%C3%A1si_nyelv)" title="C (programozási nyelv)">C programozási nyelv</a> hatékonyságának megőrzése mellett törekszik a könnyebben megírható, karbantartható és újrahasznosítható kód írására, ez azonban sok kompromisszummal jár, erre utal, hogy általánosan elterjedt a mid-level minősítése is, bár szigorú értelemben véve egyértelműen magas szintű. </p> <meta property="mw:PageProp/toc" /> <div class="mw-heading mw-heading2"><h2 id="Története"><span id="T.C3.B6rt.C3.A9nete"></span>Története</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=1" title="Szakasz szerkesztése: Története"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <figure class="mw-halign-right" typeof="mw:File/Thumb"><a href="/wiki/F%C3%A1jl:BjarneStroustrup.jpg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/d/da/BjarneStroustrup.jpg/250px-BjarneStroustrup.jpg" decoding="async" width="250" height="188" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/d/da/BjarneStroustrup.jpg/375px-BjarneStroustrup.jpg 1.5x, //upload.wikimedia.org/wikipedia/commons/d/da/BjarneStroustrup.jpg 2x" data-file-width="432" data-file-height="324" /></a><figcaption><a href="/wiki/Bjarne_Stroustrup" title="Bjarne Stroustrup">Bjarne Stroustrup</a></figcaption></figure> <p><a href="/wiki/Bjarne_Stroustrup" title="Bjarne Stroustrup">Bjarne Stroustrup</a> kezdte el a C++ programozási nyelv fejlesztését a C programozási nyelv kiterjesztéseként, más nyelvekből véve át megoldásokat (<a href="/wiki/Simula" title="Simula">Simula67</a>, <a href="/wiki/ALGOL" title="ALGOL">Algol68</a>), ötleteket (<a href="/wiki/Ada_(programoz%C3%A1si_nyelv)" title="Ada (programozási nyelv)">ADA</a>). A nyelv első, nem kísérleti körülmények közt való használatára <a href="/wiki/1983" title="1983">1983</a>-ban került sor, <a href="/wiki/1987" title="1987">1987</a>-ben pedig nyilvánvalóvá vált, hogy a C++ szabványosítása elkerülhetetlen. Ez a folyamat <a href="/wiki/1991" title="1991">1991</a> júniusában kezdődött el, amikor az <a href="/wiki/Nemzetk%C3%B6zi_Szabv%C3%A1ny%C3%BCgyi_Szervezet" title="Nemzetközi Szabványügyi Szervezet">ISO</a> szabványosítási kezdeményezés részévé vált. A C++ programozási nyelv szabványát <a href="/wiki/1998" title="1998">1998</a>-ban hagyták jóvá ISO/IEC 14882:1998 néven, az aktuális, 2017-es változat kódjelzése ISO/IEC 14882:2017.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">&#91;</span>1<span class="cite-bracket">&#93;</span></a></sup> </p> <div class="mw-heading mw-heading3"><h3 id="Érdekesség"><span id=".C3.89rdekess.C3.A9g"></span>Érdekesség</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=2" title="Szakasz szerkesztése: Érdekesség"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Mire a nyelvet szabványosították, már rengeteg C++ nyelvű kód készült, került használatba. Mivel a szabvány fejállományok némileg eltértek az eddigiektől, a bizottság érdekes megoldást választott a kompatibilitás megtartására: </p> <ul><li>A régi C++ fejállományok (pl. „iostream.h”) továbbra is használhatóak (bár hivatalosan nem támogatottak), de tartalmuk nincs benne a standard névtérben.</li> <li>Az új, hivatalos fejállományok („iostream”) szinte megegyeznek a régiekkel, de tartalmuk a standard névtérben szerepel.</li> <li>A szabvány <a href="/wiki/C_programoz%C3%A1si_nyelv" class="mw-redirect" title="C programozási nyelv">C</a> fejállományok (pl.: „stdio.h”) továbbra is támogatottak, de tartalmuk a globális névtérben van.</li> <li>A C könyvtárak átvétele szintén a .h eltávolításával történt, beszúrva egy c-t a nevük elé (pl. „stdio.h”-ból „cstdio” lett). Tartalmuk a standard névtérben szerepel.<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">&#91;</span>2<span class="cite-bracket">&#93;</span></a></sup></li></ul> <div class="mw-heading mw-heading2"><h2 id="Fordítók,_fejlesztőeszközök"><span id="Ford.C3.ADt.C3.B3k.2C_fejleszt.C5.91eszk.C3.B6z.C3.B6k"></span>Fordítók, fejlesztőeszközök</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=3" title="Szakasz szerkesztése: Fordítók, fejlesztőeszközök"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p><a href="/wiki/Windows" title="Windows">Windows</a> operációs rendszeren tanuláshoz megfelelő – és ingyenes – eszköz a <a href="/wiki/Code::Blocks" title="Code::Blocks">Code::Blocks</a>. Haladó szinten kényelmes választás a <i>Visual C++ Express Edition</i>, amely ingyen letölthető a <a href="/wiki/Microsoft" title="Microsoft">Microsoft</a> oldaláról, de több helyen bevallottan eltér a szabványtól. </p><p><a href="/wiki/Linux" title="Linux">Linux</a>/<a href="/wiki/Unix" title="Unix">UNIX</a> alatt megszokottabb a konzolból való fordítás (ez a lehetőség Windowsnál is megvan). Erre az említett rendszerekben általában a <a href="/wiki/GCC_(informatika)" title="GCC (informatika)">GNU Compiler Collection</a> <b>g++</b> programját használjuk, illetve grafikus fejlesztőeszközként rendelkezésünkre áll a <a href="/wiki/KDevelop" title="KDevelop">KDevelop</a> is, illetve a fentebb már említett Code::Blocks is elérhető Linux alatt. </p><p>A legtöbb fordító – ha nem adjuk meg külön – néhány esetben eltér a szabványtól, így optimalizáltabb kódot hozhatnak létre. Természetesen minden esetben lehetőség van a szabvány szerinti fordításra. </p> <div class="mw-heading mw-heading2"><h2 id="A_név_eredete"><span id="A_n.C3.A9v_eredete"></span>A név eredete</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=4" title="Szakasz szerkesztése: A név eredete"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Nevét Rick Mascitti találta ki. A C++ név kifejezi, hogy a nyelv a C kibővítése: az inkrementáló operátorra utal a ++.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">&#91;</span>3<span class="cite-bracket">&#93;</span></a></sup> </p> <div class="mw-heading mw-heading2"><h2 id="A_C++_alapelemei"><span id="A_C.2B.2B_alapelemei"></span>A C++ alapelemei</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=5" title="Szakasz szerkesztése: A C++ alapelemei"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-heading mw-heading3"><h3 id="Jelkészlet"><span id="Jelk.C3.A9szlet"></span>Jelkészlet</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=6" title="Szakasz szerkesztése: Jelkészlet"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A kis- és nagybetűs angol <a href="/wiki/%C3%81b%C3%A9c%C3%A9" title="Ábécé">ABC</a>, általános írásjelek és a matematikai operátorok, jelek. </p> <div class="mw-heading mw-heading3"><h3 id="Azonosítók"><span id="Azonos.C3.ADt.C3.B3k"></span>Azonosítók</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=7" title="Szakasz szerkesztése: Azonosítók"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A nyelv bizonyos összetevőire (változók, konstansok, függvények stb.) névvel hivatkozunk. A legtöbb fordító csak az első 32 karaktert veszi figyelembe a nevekben. A név első karaktere betű vagy aláhúzásjel (_) lehet, ettől kezdődően már számok is szerepelhetnek benne. Lehetőleg saját névként ne adjunk meg aláhúzásjellel (_) kezdődő nevet, mert ezek a fordító számára vannak fenntartva (pl. __DATE__, __cplusplus, _MSC_VER). A C++ <a href="/wiki/Kisbet%C5%B1-nagybet%C5%B1_%C3%A9rz%C3%A9kenys%C3%A9g" title="Kisbetű-nagybetű érzékenység">különbséget tesz a kis- és nagybetűk között</a> (case-sensitive). Az alma név nem ugyanaz, mint az Alma név. </p> <div class="mw-heading mw-heading3"><h3 id="Kulcsszavak">Kulcsszavak</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=8" title="Szakasz szerkesztése: Kulcsszavak"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Ezek a kifejezések a nyelv részei, önmagukban nem használhatóak névként. </p> <table class="wikitable" style="text-align:center"> <tbody><tr> <td>asm</td> <td>delete</td> <td>goto</td> <td>reinterpret_cast</td> <td>try </td></tr> <tr> <td>auto</td> <td>do</td> <td>if</td> <td>return</td> <td>typedef </td></tr> <tr> <td>bool</td> <td>double</td> <td>inline</td> <td>short</td> <td>typeid </td></tr> <tr> <td>break</td> <td>dynamic_cast</td> <td>int</td> <td>signed</td> <td>typename </td></tr> <tr> <td>case</td> <td>else</td> <td>long</td> <td>sizeof</td> <td>union </td></tr> <tr> <td>catch</td> <td>enum</td> <td>mutable</td> <td>static</td> <td>unsigned </td></tr> <tr> <td>char</td> <td>explicit</td> <td>namespace</td> <td>static_cast</td> <td>using </td></tr> <tr> <td>class</td> <td>export</td> <td>new</td> <td>struct</td> <td>virtual </td></tr> <tr> <td>const</td> <td>extern</td> <td>operator</td> <td>switch</td> <td>void </td></tr> <tr> <td>const_cast</td> <td>false</td> <td>private</td> <td>template</td> <td>volatile </td></tr> <tr> <td>continue</td> <td>float</td> <td>protected</td> <td>this</td> <td>wchar_t </td></tr> <tr> <td>decltype</td> <td>for</td> <td>public</td> <td>throw</td> <td>while </td></tr> <tr> <td>default</td> <td>friend</td> <td>register</td> <td>true</td> <td> </td></tr></tbody></table> <div class="mw-heading mw-heading3"><h3 id="Megjegyzések"><span id="Megjegyz.C3.A9sek"></span>Megjegyzések</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=9" title="Szakasz szerkesztése: Megjegyzések"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A megjegyzések olyan karaktersorozatok, amelyeket a program dokumentálása érdekében használunk. A fordító nem veszi figyelembe a programban elhelyezett megjegyzéseket. </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="c1">// egysoros megjegyzés</span> <span class="cm">/* Itt kezdődik a többsoros megjegyzés</span> <span class="cm">és itt a vége */</span> </pre></div> <div class="mw-heading mw-heading3"><h3 id="Operátorok"><span id="Oper.C3.A1torok"></span>Operátorok</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=10" title="Szakasz szerkesztése: Operátorok"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <table class="dablink noprint noviewer" style="padding-left: 2em; vertical-align: middle;" cellpadding="0" cellspacing="0"><tbody><tr><td style="padding-right:.25em;"><span typeof="mw:File"><a href="/wiki/F%C3%A1jl:Searchtool_right.svg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/3/32/Searchtool_right.svg/14px-Searchtool_right.svg.png" decoding="async" width="14" height="14" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/3/32/Searchtool_right.svg/21px-Searchtool_right.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/3/32/Searchtool_right.svg/28px-Searchtool_right.svg.png 2x" data-file-width="60" data-file-height="60" /></a></span></td><td><i>Bővebben: <a href="/wiki/Oper%C3%A1torok_(C%2B%2B)" title="Operátorok (C++)">Operátorok (C++)</a></i></td></tr></tbody></table> <p>A C++-ban nem vezethetünk be új operátorokat, de majdnem mindegyiket túlterhelhetjük. Van infix, prefix és postfix jelölésű operátor is. Általában meghatározott számú operandusuk lehet (egy, kettő vagy három), kivéve a függvényhívás operátor (<code>operator()</code>), amelynek bármennyi operandusa lehet. </p> <div class="mw-heading mw-heading4"><h4 id="Precedencia">Precedencia</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=11" title="Szakasz szerkesztése: Precedencia"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Az elsőbbségi (precedencia-) szabályok a kifejezések kiértékelésének helyes sorrendjét írják elő. A kiértékelés során először mindig a magasabb precedenciájú kifejezés értékelődik először. <style data-mw-deduplicate="TemplateStyles:r26938027">.mw-parser-output .is-sticky{position:sticky;top:0;z-index:10}body.vector-sticky-header-visible .mw-parser-output .is-sticky{top:3.125rem}.mw-parser-output .is-sticky-head>thead{position:sticky;top:0;z-index:10}body.vector-sticky-header-visible .mw-parser-output .is-sticky-head>thead{top:3.125rem}</style> </p> <table class="wikitable"> <caption>Az operátorok összefoglalása </caption> <tbody><tr class="is-sticky sortable"> <th>Precedencia</th> <th>Operátor</th> <th>Rövid leírás</th> <th>Kiértékelés iránya </th></tr> <tr> <td>1</td> <td>::</td> <td>Hatókör-operátor</td> <td>nincs </td></tr> <tr> <td>2</td> <td>() <br />[] <br /> -&gt; <br />. <br />++ <br />--</td> <td>Függvényhívás<br /> Tömbindexelés <br /> Mutatón keresztüli tag-elérés <br /> Objektumon keresztüli tag-elérés <br /> Posztfix növelés <br /> Posztfix csökkentés</td> <td>Balról jobbra </td></tr> <tr> <td>3</td> <td>! <br /> ~ <br /> ++ <br /> -- <br /> - <br /> + <br /> * <br /> &amp; <br /> (típus) <br /> sizeof</td> <td>Logikai tagadás <br /> Bitenkénti negálás <br /> Prefix növelés <br /> Prefix csökkentés <br /> Negatív előjel <br /> Pozitív előjel <br /> Dereferálás <br /> Címképzés <br /> Konverzió típusra <br /> Méret lekérdezése</td> <td>Jobbról balra </td></tr> <tr> <td>4</td> <td>-&gt;* <br /> .*</td> <td>Tagkiválasztás mutatón <br /> Tagkiválasztás objektumon</td> <td>Balról jobbra </td></tr> <tr> <td>5, 6</td> <td>* <br /> / <br />&#160;% <br />+<br />-</td> <td>Szorzás <br /> Osztás <br /> Maradékszámítás<br /> Összeadás<br /> Kivonás</td> <td>Balról jobbra </td></tr> <tr> <td>7</td> <td>&lt;&lt; <br /> &gt;&gt;</td> <td>Bitenkénti eltolás balra <br /> Bitenkénti eltolás jobbra</td> <td>Balról jobbra </td></tr> <tr> <td>8, 9</td> <td>&lt; <br /> &lt;= <br /> &gt; <br /> &gt;= <br />!=<br />==</td> <td>Kisebb <br /> Kisebb-egyenlő <br /> Nagyobb <br /> Nagyobb-egyenlő<br />Nem egyenlő<br />Egyenlő</td> <td>Balról jobbra </td></tr> <tr> <td>10</td> <td>&amp;</td> <td>Bitenkénti ÉS</td> <td>Balról jobbra </td></tr> <tr> <td>11</td> <td>^</td> <td>Bitenkénti kizáró VAGY</td> <td>Balról jobbra </td></tr> <tr> <td>12</td> <td>|</td> <td>Bitenkénti megengedő VAGY</td> <td>Balról jobbra </td></tr> <tr> <td>13</td> <td>&amp;&amp;</td> <td>Logikai ÉS</td> <td>Balról jobbra </td></tr> <tr> <td>14</td> <td>||</td> <td>Logikai megengedő VAGY</td> <td>Balról jobbra </td></tr> <tr> <td>15</td> <td>?:</td> <td>feltételes (if-then-else) operátor</td> <td>Jobbról balra </td></tr> <tr> <td>16</td> <td>= <br /> += <br /> -= <br /> *= <br /> /= <br />&#160;%= <br /> &amp;= <br /> ^= <br /> |= <br /> &lt;&lt;= <br /> &gt;&gt;=</td> <td>Értékadás <br /> Összeadás és értékadás <br /> Kivonás és értékadás <br /> Szorzás és értékadás <br /> Osztás és értékadás <br /> Maradékképzés és értékadás <br /> Bitenkénti ÉS és értékadás <br /> Bitenkénti kizáró VAGY és értékadás <br /> Bitenkénti megengedő VAGY és értékadás <br /> Eltolás balra és értékadás <br /> Eltolás jobbra és értékadás</td> <td>Jobbról balra </td></tr> <tr> <td>17</td> <td>,</td> <td>Szekvenciaoperátor</td> <td>Balról jobbra </td></tr></tbody></table> <div class="mw-heading mw-heading4"><h4 id="Operátorok_túlterhelése"><span id="Oper.C3.A1torok_t.C3.BAlterhel.C3.A9se"></span>Operátorok túlterhelése</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=12" title="Szakasz szerkesztése: Operátorok túlterhelése"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A közönséges függvényekhez hasonlóan a legtöbb operátort is <a class="mw-selflink-fragment" href="#Túlterhelés">túl lehet terhelni</a>, ami a felhasználói típusok kényelmesebb, szabványosabb használatát teszi lehetővé, aritmetikai operátorokkal (+, +=), és az std::cout-hoz való &lt;&lt; operátorral. </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="k">struct</span><span class="w"> </span><span class="nc">Complex</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="c1">//Barátfüggvény deklarációja, hogy hozzáférjen a tagokhoz</span> <span class="w"> </span><span class="k">friend</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">ostream</span><span class="o">&amp;</span><span class="w"> </span><span class="k">operator</span><span class="o">&lt;&lt;</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">ostream</span><span class="o">&amp;</span><span class="w"> </span><span class="n">stream</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">Complex</span><span class="o">&amp;</span><span class="w"> </span><span class="n">z</span><span class="p">);</span> <span class="w"> </span><span class="c1">//Konstruktor, taginicializációs listával</span> <span class="w"> </span><span class="n">Complex</span><span class="p">(</span><span class="kt">double</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">b</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="n">re</span><span class="p">(</span><span class="n">a</span><span class="p">),</span><span class="w"> </span><span class="n">im</span><span class="p">(</span><span class="n">b</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="n">Complex</span><span class="o">&amp;</span><span class="w"> </span><span class="k">operator</span><span class="o">+=</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="n">Complex</span><span class="o">&amp;</span><span class="w"> </span><span class="n">rhs</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="c1">//hozzáadó operátor tagfüggvény...</span> <span class="w"> </span><span class="n">re</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="n">rhs</span><span class="p">.</span><span class="n">re</span><span class="p">;</span><span class="w"> </span><span class="n">im</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="n">rhs</span><span class="p">.</span><span class="n">im</span><span class="p">;</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="o">*</span><span class="k">this</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="k">private</span><span class="o">:</span> <span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">re</span><span class="p">,</span><span class="w"> </span><span class="n">im</span><span class="p">;</span> <span class="p">};</span> <span class="n">Complex</span><span class="w"> </span><span class="k">operator</span><span class="o">+</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="n">Complex</span><span class="o">&amp;</span><span class="w"> </span><span class="n">lhs</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">Complex</span><span class="o">&amp;</span><span class="w"> </span><span class="n">rhs</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="c1">//összeadó operátor viszont globális</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">Complex</span><span class="p">(</span><span class="n">lhs</span><span class="p">)</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="n">rhs</span><span class="p">;</span> <span class="p">}</span> <span class="c1">//az ostream definíciójához nem férünk hozzá, de</span> <span class="c1">//operator&lt;&lt;(ostream&amp;, const complex&amp;)-t definiálhatunk</span> <span class="n">std</span><span class="o">::</span><span class="n">ostream</span><span class="o">&amp;</span><span class="w"> </span><span class="k">operator</span><span class="o">&lt;&lt;</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">ostream</span><span class="o">&amp;</span><span class="w"> </span><span class="n">stream</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="n">Complex</span><span class="o">&amp;</span><span class="w"> </span><span class="n">z</span><span class="p">)</span> <span class="p">{</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="p">(</span><span class="n">stream</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="sc">&#39;(&#39;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">z</span><span class="p">.</span><span class="n">re</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;, &quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">z</span><span class="p">.</span><span class="n">im</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="sc">&#39;)&#39;</span><span class="p">);</span> <span class="p">}</span> <span class="c1">//Ezután az operátort egyszerűen használhatjuk:</span> <span class="n">Complex</span><span class="w"> </span><span class="n">c</span><span class="p">(</span><span class="mf">1.0</span><span class="p">,</span><span class="w"> </span><span class="mf">4.6</span><span class="p">);</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">c</span><span class="p">;</span><span class="w"> </span><span class="c1">//A kimeneten megjelenik: (1.0, 4.6)</span> </pre></div> <div class="mw-heading mw-heading3"><h3 id="Típusok,_változók,_konstansok"><span id="T.C3.ADpusok.2C_v.C3.A1ltoz.C3.B3k.2C_konstansok"></span>Típusok, változók, konstansok</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=13" title="Szakasz szerkesztése: Típusok, változók, konstansok"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A C++ -ban minden felhasznált névről meg kell mondanunk, hogy mi az, amit képvisel, tudatnunk kell a fordítóprogrammal a típusát. Megkülönböztetünk egyszerű és összetett típusokat. Egyszerű típusok az egész típusok (előjeles és előjel nélküli), a lebegőpontos típusok, a karaktertípusok, a <b>bool</b> és a <b>void</b>. Összetett típusok az alaptípusok felhasználásával felépített tömb-, mutató- stb. típusok és a felhasználói típusok (pl. osztály). </p><p>Az alapvető adattípusok mérete fordító- és platformfüggő, de a következők adottak: </p> <ul><li><code>1 == sizeof(char) &lt;= sizeof(short) &lt;= sizeof(int) &lt;= sizeof(long)</code></li> <li><code>1 &lt;= sizeof(bool) &lt;= sizeof(long)</code></li> <li><code>sizeof(char) &lt;= sizeof(wchar_t) &lt;= sizeof(long)</code></li> <li><code>sizeof(float) &lt;= sizeof(double) &lt;= sizeof(long double)</code></li> <li><code>sizeof(N) == sizeof(signed N) == sizeof(unsigned N)</code> (ahol N lehet <b>char</b>, <b>short</b>, <b>int</b> vagy <b>long</b>)</li></ul> <p>Az itt megadott méretek a „megszokott” <a href="/wiki/32_bites_architekt%C3%BAra" title="32 bites architektúra">32 bites</a> asztali környezetben általánosak, de nem garantáltak. </p> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r26938027" /> <table class="wikitable"> <tbody><tr class="is-sticky sortable"> <th>Adattípus </th> <th>Értékkészlet </th> <th>Méret (bájt) </th> <th>Pontosság </th></tr> <tr> <td>bool</td> <td>false, true</td> <td>1</td> <td> </td></tr> <tr> <td>char</td> <td>-128..127</td> <td>1</td> <td> </td></tr> <tr> <td>signed char</td> <td>-128..127</td> <td>1</td> <td> </td></tr> <tr> <td>unsigned char</td> <td>0..255</td> <td>1</td> <td> </td></tr> <tr> <td>wchar_t</td> <td>0..65535</td> <td>2</td> <td> </td></tr> <tr> <td>int</td> <td>-2147483648..2147483647</td> <td>4</td> <td> </td></tr> <tr> <td>unsigned int</td> <td>0..4294967295</td> <td>4</td> <td> </td></tr> <tr> <td>short</td> <td>-32768..32767</td> <td>2</td> <td> </td></tr> <tr> <td>unsigned short</td> <td>0..65535</td> <td>2</td> <td> </td></tr> <tr> <td>long</td> <td>-2147483648..2147483647</td> <td>4</td> <td> </td></tr> <tr> <td>unsigned long</td> <td>0..4294967295</td> <td>4</td> <td> </td></tr> <tr> <td>long long</td> <td>-9223372036854775808..9223372036854775807</td> <td>8</td> <td> </td></tr> <tr> <td>unsigned long long</td> <td>0..18446744073709551615</td> <td>8</td> <td> </td></tr> <tr> <td>float</td> <td>3.4E-38..3.8E+38</td> <td>4</td> <td>6 </td></tr> <tr> <td>double</td> <td>1.7E-308..1.7E+308</td> <td>8</td> <td>15 </td></tr> <tr> <td>long double</td> <td>3.4E-4932..3.4E+4932</td> <td>12</td> <td>18 </td></tr></tbody></table> <p>A memóriában létrehozott tárolókat névvel látjuk el, amelynek segítségével hivatkozhatunk rájuk. Ezeket a tárolókat változóknak nevezzük. </p><p>Konstansoknak azokat a változókat nevezzük, amelyeknek pontosan egyszer, a definícióban adhatunk értéket (ekkor kötelező), és ezt a típusnév elé vagy mögé írt <b>const</b> típusminősítővel jelezzük: </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="k">const</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">x</span><span class="p">;</span><span class="w"> </span><span class="c1">//Hiba!</span> <span class="k">const</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">y</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">10</span><span class="p">;</span><span class="w"> </span><span class="c1">//Jó</span> <span class="n">y</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">10</span><span class="p">;</span><span class="w"> </span><span class="c1">//Hiba!</span> </pre></div> <div class="mw-heading mw-heading4"><h4 id="A_felsorolt_típus_(enum)"><span id="A_felsorolt_t.C3.ADpus_.28enum.29"></span>A felsorolt típus (enum)</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=14" title="Szakasz szerkesztése: A felsorolt típus (enum)"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Az „enum” olyan adattípust jelöl, melynek lehetséges értékei egy konstanshalmazból kerülnek ki. </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="k">enum</span><span class="w"> </span><span class="nc">Animals</span><span class="w"> </span><span class="p">{</span><span class="n">bear</span><span class="p">,</span><span class="w"> </span><span class="n">wolf</span><span class="p">,</span><span class="w"> </span><span class="n">rabbit</span><span class="p">};</span> </pre></div> <p>A fordító balról jobbra haladva nullával kezdve egész értékeket feleltet meg a felsorolt konstansoknak. Ha egy konstansnak egész értéket adunk, akkor a következő elemek ettől a kiindulási értéktől kapnak értéket. </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="k">enum</span><span class="w"> </span><span class="nc">Animals</span><span class="w"> </span><span class="p">{</span><span class="n">bear</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">10</span><span class="p">,</span><span class="w"> </span><span class="n">wolf</span><span class="p">,</span><span class="w"> </span><span class="n">rabbit</span><span class="p">};</span> <span class="c1">//wolf és rabbit értéke rendre 11 és 12</span> </pre></div> <p>A felsorolásban azonos értékek is szerepelhetnek. A deklarációban megadott név típusnévként is felhasználható: </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="k">enum</span><span class="w"> </span><span class="nc">Animals</span><span class="w"> </span><span class="p">{</span><span class="n">bear</span><span class="p">,</span><span class="w"> </span><span class="n">wolf</span><span class="p">,</span><span class="w"> </span><span class="n">rabbit</span><span class="p">};</span> <span class="n">Animals</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">bear</span><span class="p">;</span> </pre></div> <div class="mw-heading mw-heading4"><h4 id="Típuskonverziók"><span id="T.C3.ADpuskonverzi.C3.B3k"></span>Típuskonverziók</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=15" title="Szakasz szerkesztése: Típuskonverziók"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Előfordulhat, hogy valamely kétoperandusú operátor különböző típusú operandusokkal rendelkezik. Ekkor, beépített típusok esetén, hogy a művelet elvégezhető legyen, a fordítónak azonos típusra kell alakítania az operandusokat. Megkülönböztetünk implicit és explicit típuskonverziót. </p><p><b>Implicit típuskonverzió</b>: Ez a fajta konverzió a programozó beavatkozása nélkül automatikusan megy végbe, a C++ definíciójában szereplő szabályok alapján. A „szűkebb” típus adatvesztés nélkül konvertálódik a „szélesebb” típusra, ha szükséges. </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="kt">int</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">10</span><span class="p">;</span> <span class="kt">float</span><span class="w"> </span><span class="n">f</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">1.23</span><span class="p">;</span> <span class="n">x</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">f</span><span class="p">;</span><span class="w"> </span><span class="c1">//A kifejezés float típusú lesz, 10.00 + 1.23 alakban értékelődik ki</span> </pre></div> <p>Ebben az esetben adatvesztés léphet fel: </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="kt">float</span><span class="w"> </span><span class="n">f</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">1.23</span><span class="p">;</span> <span class="kt">int</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">f</span><span class="p">;</span><span class="w"> </span><span class="c1">//x értéke 1 lesz, a törtrész elvész</span> </pre></div> <p><b>Explicit típuskonverzió</b> </p><p><i>Feltétel nélküli típusátalakítás:</i> </p><p>(típusnév)kifejezés (pl.: (char *)c) </p><p><i>Ideiglenes érték létrehozása:</i> </p><p>típusnév(kifejezés) (pl.: int(x)) </p><p><br />Explicit konverziót a programozó előírhat a típuskonverziós operátorok használatával is. </p><p><i>Dinamikus típusátalakítás:</i> </p><p><b>dynamic_cast</b>&lt;típus&gt;(ptr) </p><p>Futásidejű konverziókat végezhetünk vele. A <i>típus</i> osztályra mutató pointer, referencia, vagy <b>void</b>* típusú kifejezés, míg a <i>ptr</i> pointer vagy referencia típusú kifejezés lehet (a <i>típus</i>nak megfelelően). Ha a konverzió nem végezhető el, akkor pointerek esetén 0 lesz az eredmény, referenciáknál pedig bad_cast kivételt vált ki. </p><p><i>Fordítási idejű átalakítások:</i> </p><p><b>static_cast</b> &lt;típus&gt;(arg) </p><p>Visszafordítható típuskonverzió egymásba konvertálható típusok között. A <i>típus</i>nak és <i>arg</i> típusának fordítási időben ismertnek kell lennie. </p><p><b>reinterpret_cast</b>&lt;típus&gt;(arg) </p><p>Úgy, mint a (típus)arg kifejezés, csak a <b>reinterpret_cast</b> nem használható <b>const</b> vagy <b>volatile</b> minősítés megszüntetésére. </p><p><i>Konstans típusátalakítás:</i> </p><p><b>const_cast</b>&lt;típus&gt;(arg) </p><p>Akkor használjuk, ha fel akarjuk oldani a <b>const</b> vagy <b>volatile</b> típusmódosítók hatását egy adott mutatón vagy referencián. A <i>típus</i> és <i>arg</i> típusának azonosnak kell lennie, kivéve a fent említett típusmódosítókat. </p> <div class="mw-heading mw-heading3"><h3 id="Pointerek">Pointerek</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=16" title="Szakasz szerkesztése: Pointerek"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Amikor egy változót definiálunk, a memóriában létrejön egy megfelelő méretű tároló, amelybe bemásolódik a kezdőérték. </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">p</span><span class="p">;</span> </pre></div> <p>A fenti példában egy <b>int</b> típusú változó címének tárolására használható tároló jön létre. A címet a címképző operátorral (&amp;) érhetjük el. </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="kt">int</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">7</span><span class="p">;</span> <span class="n">p</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">&amp;</span><span class="n">x</span><span class="p">;</span> </pre></div> <p>Most az <code>x</code> név és a <code>*p</code> (a <i>p</i> által mutatott tároló) érték ugyanarra a memóriaterületre hivatkozik. </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="o">*</span><span class="w"> </span><span class="n">p</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">6</span><span class="p">;</span> </pre></div> <p>A kifejezés hatására <i>x</i> értéke 13 lesz. </p><p>A referencia a pointernek egy olyan változata, amelyet kötelező inicializálni, és az értékét később nem lehet megváltoztatni, valamint használatának szintaktikája is különbözik: </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="kt">int</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">10</span><span class="p">;</span> <span class="kt">int</span><span class="w"> </span><span class="o">&amp;</span><span class="n">r</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">x</span><span class="p">;</span><span class="w"> </span><span class="cm">/* &#39;r&#39; most &#39;x&#39;-re mutat */</span> <span class="n">r</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">r</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="cm">/* ugyanaz, mint x = x + 1 */</span> <span class="o">&amp;</span><span class="n">r</span><span class="p">;</span><span class="w"> </span><span class="cm">/* ugyanaz, mint &amp;x */</span> </pre></div> <p>Elterjedt nézet, hogy a referenciák minőségileg különböznek a pointerektől, ezért nem tartalmazhatnak NULL-értéket, illetve érvénytelen címet. Ez nem egészen igaz, tekintsük az alábbi példákat: </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="o">&amp;</span><span class="n">ref1</span><span class="o">=</span><span class="w"> </span><span class="o">*</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="mi">0</span><span class="p">;</span> <span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="o">&amp;</span><span class="n">ref2</span><span class="o">=</span><span class="w"> </span><span class="o">*</span><span class="k">new</span><span class="w"> </span><span class="kt">int</span><span class="p">;</span><span class="w"> </span><span class="k">delete</span><span class="w"> </span><span class="o">&amp;</span><span class="n">ref2</span><span class="p">;</span> <span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="o">&amp;</span><span class="n">ref3</span><span class="o">=</span><span class="w"> </span><span class="o">*</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="n">malloc</span><span class="w"> </span><span class="p">(</span><span class="k">sizeof</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="p">));</span><span class="w"> </span><span class="n">free</span><span class="w"> </span><span class="p">(</span><span class="o">&amp;</span><span class="n">ref3</span><span class="p">);</span> </pre></div> <p>Itt <i>ref1</i> tartalma nulla, <i>ref2</i> és <i>ref3</i> tartalma érvénytelen (már felszabadított) memóriacím. </p> <div class="mw-heading mw-heading3"><h3 id="Névterek"><span id="N.C3.A9vterek"></span>Névterek</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=17" title="Szakasz szerkesztése: Névterek"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A fordító a programban használt neveket különböző névterekben (namespace) tárolja. Egy névtérben lévő neveknek egyedieknek kell lenniük, azonban a különböző névterekben azonos néven is szerepelhetnek, azaz a névterek a láthatósági szabályokat teszik könnyebben alkalmazhatóvá. Egy névtérben logikailag összefüggő változókat, függvényeket, típusokat tárolunk. Egy osztály/struktúra egyben a nevével azonos nevű névteret is definiál. </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="c1">// Az Állat névtéren belül szerepel a Farkas és Medve osztályok definíciója</span> <span class="k">namespace</span><span class="w"> </span><span class="nn">Allat</span><span class="p">{</span> <span class="w"> </span><span class="k">class</span><span class="w"> </span><span class="nc">Farkas</span><span class="p">{...};</span> <span class="w"> </span><span class="k">class</span><span class="w"> </span><span class="nc">Medve</span><span class="p">{...};</span> <span class="p">}</span> </pre></div> <p>Egy névtér elemeire háromféleképpen hivatkozhatunk: </p> <ul><li>Globális névfeloldással <i>(using direktíva)</i>, ekkor a névtér összes eleme használható; használata körültekintést igényel, mivel egész névterek importálásakor könnyen névütközés lehet:</li></ul> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;iostream&gt;</span> <span class="k">using</span><span class="w"> </span><span class="k">namespace</span><span class="w"> </span><span class="nn">std</span><span class="p">;</span><span class="w"> </span><span class="c1">//A standard (std) névtér globális használata</span> <span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">argc</span><span class="p">,</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">argv</span><span class="p">[])</span> <span class="p">{</span> <span class="w"> </span><span class="n">cout</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;Globális névfeloldás&quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">endl</span><span class="p">;</span><span class="w"> </span><span class="c1">//std::cout &lt;&lt; &quot;Globális névfeloldás&quot; &lt;&lt; std::endl; helyett</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span> <span class="p">}</span> </pre></div> <ul><li>Explicit névfeloldással megadva a kívánt névteret, közvetlenül a feloldani kívánt elem esetében:</li></ul> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;iostream&gt;</span> <span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">argc</span><span class="p">,</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">argv</span><span class="p">[])</span> <span class="p">{</span> <span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;Explicit névfeloldás&quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span> <span class="p">}</span> </pre></div> <ul><li>A kívánt elem nevének feloldásával <i>(using deklaráció)</i>:</li></ul> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="cp">#</span><span class="w"> </span><span class="cp">include</span><span class="w"> </span><span class="cpf">&lt;iostream&gt;</span> <span class="k">using</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="p">;</span><span class="w"> </span><span class="c1">//A standard (std) névtérbeli cout globális használata</span> <span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">argc</span><span class="p">,</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">argv</span><span class="p">[])</span> <span class="p">{</span> <span class="w"> </span><span class="n">cout</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;Csak a cout lett feloldva&quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span> <span class="p">}</span> </pre></div> <p>Létezik az úgynevezett névtelen névtér, amit arra használhatunk, hogy ne szemeteljük tele a globális névteret, megvédjük magunkat a többértelműségektől. </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="k">namespace</span> <span class="p">{</span> <span class="w"> </span><span class="c1">//amit el akarunk keríteni</span> <span class="p">}</span> </pre></div> <div class="mw-heading mw-heading2"><h2 id="A_C++_programok_szerkezete"><span id="A_C.2B.2B_programok_szerkezete"></span>A C++ programok szerkezete</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=18" title="Szakasz szerkesztése: A C++ programok szerkezete"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-heading mw-heading3"><h3 id="Hello_World!"><span id="Hello_World.21"></span>Hello World!</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=19" title="Szakasz szerkesztése: Hello World!"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Az úgynevezett <a href="/wiki/%E2%80%9EHell%C3%B3,_vil%C3%A1g!%E2%80%9D_program" title="„Helló, világ!” program">„Helló, világ!” programot</a> először <a href="/w/index.php?title=Brian_Kernigham&amp;action=edit&amp;redlink=1" class="new" title="Brian Kernigham (a lap nem létezik)">Brian Kernigham</a> és <a href="/w/index.php?title=Dennis_Richie&amp;action=edit&amp;redlink=1" class="new" title="Dennis Richie (a lap nem létezik)">Dennis Richie</a> alkalmazta <b>A C programozási nyelv</b> című könyvükben példaprogramként. Mindössze annyit csinál, hogy a képernyőre írja az üdvözletet. </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;iostream&gt;</span> <span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">()</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;Helló, világ!&quot;</span><span class="p">;</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span> <span class="p">}</span> </pre></div> <p>A kettőskereszttel (#) jelzett sorok az előfordítónak (precompiler) szóló utasítások. Az <code>include</code> utasítás behelyettesíti a hívás helyére a megadott fájl tartalmát. Az <i>iostream</i> fejállomány tartalmazza a megfelelő utasításokat a kiíratáshoz. A <i>main</i> egy függvény, ez a program belépési pontja. Minden C++ nyelven írt programnak tartalmaznia kell. Paraméterei közül az <i>argc</i> a parancssori paraméterek számát adja meg, míg az <i>argv[]</i> egy nullpointerrel terminált, karaktermutatókat tartalmazó tömb, amelyben a paraméterek vannak C-stílusú stringként. A C++-ban a tömböket nullától indexeljük, az <i>argv</i> nulladik eleme a futtatható állomány neve, első eleme pedig az első paraméter. </p> <pre>./program elso masodik (vagy program.exe elso masodik) argv[0] == "program" argv[1] == "elso" argv[2] == "masodik" </pre> <p>A két kapcsos zárójel ({}) közti részt blokknak nevezzük. A <code>cout</code> a C++ standard kimenete, az <code>std::</code> pedig arra szolgál, hogy a fordító a standard névtérben keresse a <i>cout</i> definícióját. A <code>::</code> az ún. hatókör operátor. A <code>return</code> visszaadja a vezérlést az őt hívó függvénynek, jelen esetben ez a program futásának befejezését jelenti, ezért az operációs rendszernek. A <code>return</code> mögé írt szám a visszatérési érték, a 0 általában azt jelzi, hogy a program rendben lefutott. A main()-ben ez nem kötelező; ha elhagyjuk, akkor automatikusan 0-t ad vissza. </p><p>A program futásának eredménye: </p> <pre>./program Hello World! </pre> <div class="mw-heading mw-heading3"><h3 id="Standard_IO">Standard IO</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=20" title="Szakasz szerkesztése: Standard IO"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A C++ megkülönböztet standard inputot, outputot, illetve errort. A standard output (cout), amire ír, ez alapértelmezés szerint a képernyő. A standard input (cin) a bejövő adatokat fogadja, alapesetben a billentyűzetet. A standard error (cerr) az az eszköz, ahová a hibaüzenetek érkeznek, alapértelmezetten szintén a képernyő. </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;Standard kimenet!&quot;</span><span class="p">;</span> <span class="kt">char</span><span class="w"> </span><span class="n">ch</span><span class="p">;</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cin</span><span class="w"> </span><span class="o">&gt;&gt;</span><span class="w"> </span><span class="n">ch</span><span class="p">;</span><span class="w"> </span><span class="c1">// A standard bemenetről beolvasunk a ch változóba</span> <span class="n">std</span><span class="o">::</span><span class="n">cerr</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;Standard error!&quot;</span><span class="p">;</span> </pre></div> <div class="mw-heading mw-heading3"><h3 id="Az_előfordító"><span id="Az_el.C5.91ford.C3.ADt.C3.B3"></span>Az előfordító</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=21" title="Szakasz szerkesztése: Az előfordító"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <table class="dablink noprint noviewer" style="padding-left: 2em; vertical-align: middle;" cellpadding="0" cellspacing="0"><tbody><tr><td style="padding-right:.25em;"><span typeof="mw:File"><a href="/wiki/F%C3%A1jl:Searchtool_right.svg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/3/32/Searchtool_right.svg/14px-Searchtool_right.svg.png" decoding="async" width="14" height="14" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/3/32/Searchtool_right.svg/21px-Searchtool_right.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/3/32/Searchtool_right.svg/28px-Searchtool_right.svg.png 2x" data-file-width="60" data-file-height="60" /></a></span></td><td><i>Bővebben: <a href="/wiki/C_el%C5%91ford%C3%ADt%C3%B3" title="C előfordító">C előfordító</a></i></td></tr></tbody></table> <p>A C++ megörökölte a <a href="/wiki/C_(programoz%C3%A1si_nyelv)" title="C (programozási nyelv)">C</a> előfordítóját. Az előfordító a tényleges fordítás előtt fut le. Feladatai közé tartozik a forráskód megfelelő átalakítása, szimbólumok és makrók definiálása, illetve felhasználható feltételes fordításra is. Az előfordító által definiált szimbólumok és makrók típus nélküli értékekkel dolgoznak, ezért míg a C – gyengén típusos nyelv lévén – erősen épít az előfordítóra, a C++ nyelvben gyakorta (fordítási és futási) hibák forrásai lehetnek. </p> <div class="mw-heading mw-heading3"><h3 id="Vezérlési_szerkezetek"><span id="Vez.C3.A9rl.C3.A9si_szerkezetek"></span>Vezérlési szerkezetek</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=22" title="Szakasz szerkesztése: Vezérlési szerkezetek"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-heading mw-heading4"><h4 id="Szekvencia">Szekvencia</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=23" title="Szakasz szerkesztése: Szekvencia"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A szekvencia az egymás után végrehajtott utasításokat jelenti: </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="n">utasítás1</span><span class="p">;</span> <span class="n">utasítás2</span><span class="p">;</span> <span class="p">...</span> </pre></div> <div class="mw-heading mw-heading4"><h4 id="Elágazás_(szelekció)"><span id="El.C3.A1gaz.C3.A1s_.28szelekci.C3.B3.29"></span>Elágazás (szelekció)</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=24" title="Szakasz szerkesztése: Elágazás (szelekció)"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Amikor a program a futásakor egy elágazáshoz ér, megvizsgál egy feltételt, és ha igaz, akkor végrehajtja a megfelelő utasítást. </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="k">if</span><span class="p">(</span><span class="n">feltétel</span><span class="p">)</span><span class="w"> </span><span class="n">utasítás</span><span class="p">;</span> <span class="k">else</span><span class="w"> </span><span class="n">utasítás</span><span class="p">;</span> <span class="c1">//az utasítások lehetnek blokkok({}) is, az else ág elhagyható</span> </pre></div> <p>A feltétel több szempontból való megvizsgálására a <b>C++</b> a <b>switch</b> szerkezetet adja, de ez korlátozott: csak integrális (<b>int</b>, <b>char</b> és <b>enum</b>) típust lehet vizsgálni. </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="kt">void</span><span class="w"> </span><span class="nf">Eldontendo</span><span class="p">(</span><span class="kt">char</span><span class="w"> </span><span class="n">c</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">switch</span><span class="p">(</span><span class="n">c</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="sc">&#39;i&#39;</span><span class="p">:</span> <span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="sc">&#39;I&#39;</span><span class="p">:</span><span class="w"> </span><span class="n">cout</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;Igen</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">;</span><span class="w"> </span><span class="k">break</span><span class="p">;</span><span class="w"> </span><span class="c1">//break; nélkül &quot;átesne&quot; a következő case-be is</span> <span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="sc">&#39;n&#39;</span><span class="p">:</span><span class="w"> </span><span class="c1">//itt viszont szándékosan nincs break;</span> <span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="sc">&#39;N&#39;</span><span class="p">:</span><span class="w"> </span><span class="n">cout</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;Nem</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">;</span><span class="w"> </span><span class="k">break</span><span class="p">;</span> <span class="w"> </span><span class="k">default</span><span class="o">:</span><span class="w"> </span><span class="n">cout</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;I/i vagy N/n!</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">;</span><span class="w"> </span><span class="k">break</span><span class="p">;</span><span class="w"> </span><span class="c1">//nem kötelező, ha semelyik sem igaz, ide ugrik</span> <span class="w"> </span><span class="p">}</span> <span class="p">}</span> </pre></div> <p>Ha mégis bonyolultabb többszörös feltételt kell megvizsgálnunk, akkor használhatjuk az <b>else if</b> szerkezetet, azaz az <b>else</b> ágban nyitott <b>if</b> -et. </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="k">if</span><span class="p">(</span><span class="n">feltétel_1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">utasítás_1</span><span class="p">;</span> <span class="p">}</span> <span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="p">(</span><span class="n">feltétel_2</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">utasítás_2</span><span class="p">;</span> <span class="p">}</span> <span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="p">(...)</span><span class="w"> </span><span class="p">{</span> <span class="p">}</span> <span class="p">.</span> <span class="p">.</span> <span class="p">.</span> <span class="k">else</span><span class="w"> </span><span class="n">utasítás</span><span class="p">;</span> </pre></div> <p>Egy elágazásban pontosan egy <b>if</b> és legfeljebb egy <b>else</b> ág lehet. </p><p>A feltételek kiértékelése balról jobbra történik a logikai operátorok asszociativitásának megfelelően, és csak addig megy, amíg a maradék kifejezéstől függetlenül biztosan igaz vagy hamis lesz az eredmény (lusta vagy rövid záras kiértékelés): </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="kt">bool</span><span class="w"> </span><span class="n">l</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">false</span><span class="p">;</span> <span class="kt">bool</span><span class="w"> </span><span class="n">k</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">true</span><span class="p">;</span> <span class="k">if</span><span class="p">(</span><span class="n">l</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">k</span><span class="p">)</span> <span class="p">{</span> <span class="w"> </span><span class="n">utasítás</span><span class="p">;</span> <span class="p">}</span> </pre></div> <p>A fenti példában a logikai és operátort használtuk, ez a feltétel akkor lesz igaz, ha <i>l</i> és <i>k</i> is igaz. Mivel <i>l</i> hamis, ezért a program csak <i>l</i>-t fogja vizsgálni. Ez fontos lehet, ha mellékhatással jár a feltétel megvizsgálása. </p> <div class="mw-heading mw-heading4"><h4 id="Ciklus_(iteráció)"><span id="Ciklus_.28iter.C3.A1ci.C3.B3.29"></span>Ciklus (iteráció)</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=25" title="Szakasz szerkesztése: Ciklus (iteráció)"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p><a href="/wiki/Ciklus_(programoz%C3%A1s)" title="Ciklus (programozás)">Ciklust</a> akkor használunk, ha ugyanazt a feladatot többször kell elvégezni egymás után. Háromféle ciklus áll rendelkezésre: </p><p>Számláló ciklus (for) </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="k">for</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">10</span><span class="p">;</span><span class="w"> </span><span class="o">++</span><span class="n">i</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;i = &quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span> <span class="p">}</span><span class="w"> </span><span class="c1">// A {} egyetlen utasításnál elhagyható.</span> </pre></div> <p>A ciklusfeltételben felveszünk egy ciklusváltozót, kezdőértéket adunk neki, és megadjuk, meddig menjen a számláló. A <code>++</code> a C++ ún. inkrementáló operátora, megvan a párja (<code>--</code>, dekrementáló) is. Két alakja létezik: </p> <ul><li><code>változó++</code> → postfixes alak, csak a kifejezés kiértékelése után növeli az értékét és létrehoz egy átmeneti változót.</li> <li><code>++változó</code> → prefixes alak, nincs átmeneti változó, azonnal növeli az értékét, általában ezt használjuk.</li></ul> <p>Elöltesztelő ciklus: </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="k">while</span><span class="p">(</span><span class="n">feltétel</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">utasítás</span><span class="p">;</span> <span class="p">}</span><span class="w"> </span><span class="c1">// A {} egyetlen utasításnál elhagyható.</span> </pre></div> <p>Az elöltesztelő ciklus előbb vizsgálja a ciklusfeltételt, aztán hajtja végre az utasításokat. Ez azt jelenti, hogy nem biztos, hogy akár egyszer is lefut. </p><p>Hátultesztelő ciklus: </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="k">do</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// A {} egyetlen utasításnál elhagyható.</span> <span class="w"> </span><span class="n">utasítás</span><span class="p">;</span> <span class="p">}</span><span class="w"> </span><span class="k">while</span><span class="p">(</span><span class="n">feltétel</span><span class="p">);</span> </pre></div> <p>Ez a ciklus biztos, hogy egyszer legalább lefut. </p><p>A C++-ban sok nyelvvel ellentétben a for ciklus szinte egy az egyben megfeleltethető while ciklusnak. </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="k">for</span><span class="p">(</span><span class="n">inicializál</span><span class="p">;</span><span class="w"> </span><span class="n">tesztel</span><span class="p">;</span><span class="w"> </span><span class="n">inkrementál</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">programrész</span><span class="p">;</span> <span class="p">}</span> <span class="c1">// Ekvivalens ezzel</span> <span class="n">inicializál</span><span class="p">;</span> <span class="k">while</span><span class="p">(</span><span class="n">tesztel</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">programrész</span><span class="p">;</span> <span class="w"> </span><span class="c1">// Apró különbség: Ha a &#39;programrész&#39; &#39;countinue&#39; utasítást tartalmaz,</span> <span class="w"> </span><span class="c1">// akkor &#39;while&#39; esetén az &#39;inkrementál&#39; nem fut le.</span> <span class="w"> </span><span class="n">inkrementál</span><span class="p">;</span> <span class="p">}</span> <span class="c1">// Ekvivalens ezzel is</span> <span class="n">inicializál</span><span class="p">;</span> <span class="k">if</span><span class="p">(</span><span class="n">tesztel</span><span class="p">)</span> <span class="w"> </span><span class="k">do</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">programrész</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">while</span><span class="p">(</span><span class="n">inkrementál</span><span class="p">,</span><span class="w"> </span><span class="n">tesztel</span><span class="p">);</span><span class="w"> </span><span class="c1">// Ha a tesztel-nek nincs mellékhatása</span> </pre></div> <div class="mw-heading mw-heading5"><h5 id="Break,_continue"><span id="Break.2C_continue"></span>Break, continue</h5><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=26" title="Szakasz szerkesztése: Break, continue"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Speciális vezérlőszavak a <code>break</code> és a <code>continue</code>: a <code>break</code> kilép a legbelső ciklusból (nincs többszörös break), a <code>continue</code> pedig a ciklus végére ugrik, azaz a feltételvizsgálathoz, átugorva a ciklusmag hátralévő részét. </p> <div class="mw-heading mw-heading4"><h4 id="A_goto">A goto</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=27" title="Szakasz szerkesztése: A goto"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A <a href="/wiki/GOTO" title="GOTO">goto</a> mint utasítás speciális a vezérlők között, a vezérlés szerkezetének felborítását végzi, egyszerű ugróutasítás. </p><p>Szerkezete: <code>goto címke;</code>, ahol a címkét <code>címke:</code> alakban vezetjük be. Túlzott használata átláthatatlanná teheti a kódot, néha mégis alkalmazni kell, például ha többszörösen beágyazott ciklusból kell kilépni. </p> <div class="mw-heading mw-heading3"><h3 id="Adatszerkezetek">Adatszerkezetek</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=28" title="Szakasz szerkesztése: Adatszerkezetek"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-heading mw-heading4"><h4 id="Tömb"><span id="T.C3.B6mb"></span>Tömb</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=29" title="Szakasz szerkesztése: Tömb"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A C stílusú tömb azonos típusú adatok halmaza, amelyek a memóriában folytonosan helyezkednek el. Csak alapértelmezett konstruktorral rendelkező (minden beépített típus ilyen) típusokból lehet tömböt létrehozni. A tömb elemeire a tömb nevével és az indexelő operátorral ([]) hivatkozhatunk: </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="kt">int</span><span class="w"> </span><span class="n">t</span><span class="p">[</span><span class="mi">10</span><span class="p">];</span><span class="w"> </span><span class="c1">//10 elemű statikus tömb, más néven vektor</span> <span class="k">for</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">10</span><span class="p">;</span><span class="w"> </span><span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span> <span class="w"> </span><span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">i</span><span class="p">;</span><span class="w"> </span><span class="c1">//az i-edik index értéke legyen i</span> <span class="p">}</span> </pre></div> <p>Elemi típusok foglalása esetén a tárolók kezdeti értéke nem definiált (legtöbbször memóriaszemét, bizonyos futási környezetekben lehet csupa nulla). Osztályok esetén minden elem konstruktora külön meghívódik. </p><p>A C++-ban a tömböket nullától indexeljük. A C++-<a href="/wiki/Ford%C3%ADt%C3%B3program" title="Fordítóprogram">fordító</a> nem ellenőrzi a tömbindexeket, ezért hibás indexeléssel is lefordul a program, de futás közben ez több problémát is okozhat. Egyrészt felülírhatjuk a memóriában előtte vagy utána lévő adatainkat, másrészt akár olyan memóriaterületre próbálhatunk meg írni (vagy onnan olvasni), amely nem a mi programunkhoz tartozik, ekkor az <a href="/wiki/Oper%C3%A1ci%C3%B3s_rendszer" title="Operációs rendszer">operációs rendszer</a> – amennyiben a hardver érzékeli, ill. támogatja és saját maga is elég fejlett ehhez – megszakítja a programunk futását és értesíti a felhasználót. Ennek formája operációs rendszerenként és felhasználói felületenként változó (<a href="/w/index.php?title=Segmentation_fault&amp;action=edit&amp;redlink=1" class="new" title="Segmentation fault (a lap nem létezik)">Segmentation fault</a>, <a href="/w/index.php?title=General_protection_fault&amp;action=edit&amp;redlink=1" class="new" title="General protection fault (a lap nem létezik)">General protection fault</a>, <a href="/w/index.php?title=Access_violation&amp;action=edit&amp;redlink=1" class="new" title="Access violation (a lap nem létezik)">Access violation</a>…). </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="kt">int</span><span class="w"> </span><span class="n">t</span><span class="p">[</span><span class="mi">10</span><span class="p">];</span><span class="w"> </span><span class="c1">// 10 elemű tömb létrehozása</span> <span class="c1">// tömb feltöltése</span> <span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">t</span><span class="p">[</span><span class="mi">10</span><span class="p">];</span> <span class="c1">//lefordul, de hibás, mivel nulla az első elem indexe, t[9] a legmagasabb hivatkozható elem</span> </pre></div> <p>Létrehozhatunk többdimenziós tömböt is: </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="kt">int</span><span class="w"> </span><span class="n">t</span><span class="p">[</span><span class="n">méret1</span><span class="p">][</span><span class="n">meret2</span><span class="p">]...[</span><span class="n">meretN</span><span class="p">];</span> </pre></div> <p>A leggyakrabban használt a kétdimenziós tömb, azaz a <a href="/wiki/M%C3%A1trix_(matematika)" title="Mátrix (matematika)">mátrix</a>: </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="kt">int</span><span class="w"> </span><span class="n">sizeN</span><span class="p">,</span><span class="w"> </span><span class="n">sizeM</span><span class="p">;</span> <span class="n">sizeN</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">sizeM</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">5</span><span class="p">;</span> <span class="kt">int</span><span class="w"> </span><span class="n">t</span><span class="p">[</span><span class="n">sizeN</span><span class="p">][</span><span class="n">sizeM</span><span class="p">];</span><span class="w"> </span><span class="c1">//5*5 mátrix</span> <span class="k">for</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="n">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">sizeN</span><span class="p">;</span><span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span> <span class="w"> </span><span class="k">for</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="n">j</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">sizeM</span><span class="p">;</span><span class="o">++</span><span class="n">j</span><span class="p">)</span> <span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">j</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">j</span><span class="p">;</span><span class="w"> </span><span class="c1">// az i -edik sor j -edik oszlopa legyen i+j</span> <span class="w"> </span><span class="p">}</span> <span class="p">}</span> </pre></div> <p>A tömb neve kifejezésekben a nulladik elemre mutató pointerként érvényesül. Gyakran nem tudjuk előre a tömbök méretét, sokszor csak futásidőben derül ki, ekkor <a href="/w/index.php?title=Dinamikus_mem%C3%B3riakezel%C3%A9s&amp;action=edit&amp;redlink=1" class="new" title="Dinamikus memóriakezelés (a lap nem létezik)">dinamikus memóriakezelést</a> kell használnunk. Az egy értékre, illetve a több értékre mutató pointerek között nincsen szintaktikai különbség, a programozónak kell tudnia a programlogika alapján, hogy mikor melyikkel van dolga. </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="kt">int</span><span class="w"> </span><span class="n">meret</span><span class="p">;</span> <span class="n">std</span><span class="o">::</span><span class="n">cin</span><span class="w"> </span><span class="o">&gt;&gt;</span><span class="w"> </span><span class="n">meret</span><span class="p">;</span><span class="w"> </span><span class="c1">// Beolvasás felhasználótól</span> <span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="n">t</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="kt">int</span><span class="p">[</span><span class="n">meret</span><span class="p">];</span><span class="w"> </span><span class="c1">// Foglalás</span> <span class="k">for</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="o">=</span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">&lt;</span><span class="n">meret</span><span class="p">;</span><span class="w"> </span><span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span> <span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cin</span><span class="w"> </span><span class="o">&gt;&gt;</span><span class="w"> </span><span class="n">t</span><span class="p">[</span><span class="n">i</span><span class="p">];</span><span class="w"> </span><span class="c1">// Beolvasás a tömb i-edik elemébe</span> <span class="p">}</span> <span class="c1">// Tetszőleges feladat megoldása itt, pl rendezés, átlag számítás, stb...</span> <span class="k">delete</span><span class="p">[]</span><span class="w"> </span><span class="n">t</span><span class="p">;</span><span class="w"> </span><span class="c1">// A dinamikusan foglalt memória felszabadítása</span> </pre></div> <p>A tömbök és pointerek "mechanikai" azonosságát jól demonstrálják az alábbi sorok, melyek mind ugyanazt jelentik: </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="n">t</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">9</span><span class="p">;</span> <span class="o">*</span><span class="w"> </span><span class="p">(</span><span class="n">t</span><span class="o">+</span><span class="mi">3</span><span class="p">)</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">9</span><span class="p">;</span><span class="w"> </span><span class="c1">// +3: 3 elemnyivel arrébb; *: mutató feloldása, hogy megkapjuk a &quot;rekeszt&quot;</span> <span class="o">*</span><span class="w"> </span><span class="p">(</span><span class="o">&amp;</span><span class="p">(</span><span class="n">t</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">9</span><span class="p">;</span><span class="w"> </span><span class="c1">// &amp;: A második &quot;rekesz&quot; címe; +1: 1 elemnyivel arrébb; *: mint előbb</span> </pre></div> <p>Illetve </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="n">t</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">9</span><span class="p">;</span> <span class="o">*</span><span class="w"> </span><span class="p">(</span><span class="n">t</span><span class="o">+</span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">9</span><span class="p">;</span> <span class="o">*</span><span class="w"> </span><span class="n">t</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">9</span><span class="p">;</span> </pre></div> <p>C++-ban tömbök helyett gyakran az <a href="/w/index.php?title=STL&amp;action=edit&amp;redlink=1" class="new" title="STL (a lap nem létezik)">STL</a> részeként rendelkezésre álló <code>std::vector</code> <a href="/w/index.php?title=Sablon_(programoz%C3%A1s)&amp;action=edit&amp;redlink=1" class="new" title="Sablon (programozás) (a lap nem létezik)">sablont</a> szokták alkalmazni. Lásd: <a href="/wiki/T%C3%A1rol%C3%B3k_(STL)" title="Tárolók (STL)">Tárolók (STL)</a>. </p> <div class="mw-heading mw-heading4"><h4 id="Struktúrák"><span id="Strukt.C3.BAr.C3.A1k"></span>Struktúrák</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=30" title="Szakasz szerkesztése: Struktúrák"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A programozás során gyakran találkozhatunk olyan esetekkel, amikor több különböző adatot egy egységként kell kezelnünk, például egy könyvnek van szerzője, címe, kiadója, stb. A C++ nyelvben a struktúra (struct) különböző típusú adatok együttese: </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="c1">//a Book struktúra definíciója</span> <span class="k">struct</span><span class="w"> </span><span class="nc">Book</span> <span class="p">{</span> <span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="w"> </span><span class="n">title</span><span class="p">;</span> <span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="w"> </span><span class="n">writer</span><span class="p">;</span> <span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">year</span><span class="p">;</span> <span class="p">};</span> </pre></div> <p>A <i>string</i> típus karaktersorozatot jelöl, és a standard névtérben helyezkedik el. A struktúrák adattagjaira a pont operátor (.) segítségével hivatkozhatunk és adhatunk nekik értéket: </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="c1">//Book struktúra megadása tagonként</span> <span class="n">Book</span><span class="w"> </span><span class="n">b</span><span class="p">;</span><span class="w"> </span><span class="c1">//típusként kezelhetjük</span> <span class="n">b</span><span class="p">.</span><span class="n">title</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;A C++ programozási nyelv&quot;</span><span class="p">;</span> <span class="n">b</span><span class="p">.</span><span class="n">writer</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;Bjarne Stroustrup&quot;</span><span class="p">;</span> <span class="n">b</span><span class="p">.</span><span class="n">year</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">2005</span><span class="p">;</span> <span class="c1">//Book kezdőértékadása</span> <span class="n">Book</span><span class="w"> </span><span class="n">c</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="s">&quot;A C++ programozási nyelv&quot;</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;Bjarne Stroustrup&quot;</span><span class="p">,</span><span class="w"> </span><span class="mi">2005</span><span class="p">};</span> <span class="c1">//c azonos tartalmú b-vel</span> </pre></div> <p>Struktúrákat a C nyelvben is lehet használni. A C++-ban a struktúrákat kibővítették, hogy alkalmasak legyenek az objektumorientált programozás megvalósítására: </p> <ul><li>Rendelkezhetnek konstruktorral és destruktorral</li> <li>Lehetnek tagfüggvényeik</li> <li>Szabályozható az adattagok elérése</li></ul> <p>A struktúra minden tagjának láthatósága alapértelmezetten nyilvános (public), ettől eltekintve lényegében ekvivalens a class szerkezettel, ahol az alapértelmezett elérés zárt (private). </p> <div class="mw-heading mw-heading5"><h5 id="Tömb_struktúrán_belül"><span id="T.C3.B6mb_strukt.C3.BAr.C3.A1n_bel.C3.BCl"></span>Tömb struktúrán belül</h5><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=31" title="Szakasz szerkesztése: Tömb struktúrán belül"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="k">struct</span><span class="w"> </span><span class="nc">Minta</span><span class="w"> </span><span class="p">{</span><span class="kt">int</span><span class="w"> </span><span class="n">x</span><span class="p">};</span> <span class="k">struct</span><span class="w"> </span><span class="nc">A</span><span class="w"> </span><span class="p">{</span><span class="kt">int</span><span class="w"> </span><span class="n">x</span><span class="p">;</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">t</span><span class="p">[</span><span class="mi">10</span><span class="p">]};</span> <span class="k">struct</span><span class="w"> </span><span class="nc">B</span><span class="w"> </span><span class="p">{</span><span class="kt">int</span><span class="w"> </span><span class="n">x</span><span class="p">;</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="n">t</span><span class="p">};</span> <span class="c1">// ...</span> <span class="n">A</span><span class="w"> </span><span class="n">a</span><span class="p">;</span> <span class="n">B</span><span class="w"> </span><span class="n">b</span><span class="p">;</span> <span class="c1">// ...</span> <span class="n">a</span><span class="p">.</span><span class="n">t</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">9</span><span class="p">;</span> <span class="n">b</span><span class="p">.</span><span class="n">t</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">9</span><span class="p">;</span> </pre></div> <p>Az <i>A</i> struktúra „fizikailag” tartalmazza a 10 darab int típusú értéket, a <code>sizeof(A)</code> ennek megfelelően 10 intnyivel nagyobb, mint a <code>sizeof(Minta)</code>. A <i>B</i> struktúra csak egy pointert tartalmaz, amely „mögé” tetszőleges számú elemnek lefoglalhatunk memóriát, ekkor a <code>sizeof(B)</code> csak egy pointer méretével több, mint a <code>sizeof(Minta)</code>. A tömb elemeire hivatkozáskor a két eset között nincsen szintaktikai különbség, de a struktúra másolásakor óvatosnak kell lennünk. </p> <div class="mw-heading mw-heading4"><h4 id="Uniók,_bitmezők"><span id="Uni.C3.B3k.2C_bitmez.C5.91k"></span>Uniók, bitmezők</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=32" title="Szakasz szerkesztése: Uniók, bitmezők"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A <a href="/wiki/C_(programoz%C3%A1si_nyelv)" title="C (programozási nyelv)">C</a> nyelv kidolgozásakor a takarékos memóriahasználat érdekében több megoldást is beépítettek a nyelvbe: </p><p>Az uniók (union) lényege, hogy ugyanazt a memóriaterületet több változó közösen használja (persze nem egyidejűleg). Leggyakrabban gépfüggő adatkonverziók megvalósítására használják. </p><p>A bitmezők az egy bájtnál kisebb helyfoglalású változókat egyetlen bájton tárolják. Gyakorlati hasznuk főleg a hardverek vezérlésénél van. </p> <div class="mw-heading mw-heading4"><h4 id="Osztályok"><span id="Oszt.C3.A1lyok"></span>Osztályok</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=33" title="Szakasz szerkesztése: Osztályok"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A C++ az objektumorientált programozás megvalósításához egyrészt kibővíti a struktúrákat, másrészt bevezeti a class típust. Mindkettő alkalmas osztály definiálására. Egy osztály (class) adattagjának háromféle elérhetősége lehet: </p> <ul><li><b>public</b>, nyilvános, mindenki számára elérhető</li> <li><b>private</b>, privát, csak az osztályon belülről, illetve barátosztályokból és -függvényekből lehet elérni</li> <li><b>protected</b>, védett, a származtatott osztályok számára közvetlen elérhetőséget biztosít. A private tagok a leszármazottakból csak az ősosztály tagfüggvényeiből (metódusok) elérhetőek.</li></ul> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="c1">//Egy egyszerű osztály</span> <span class="k">class</span><span class="w"> </span><span class="nc">SimpleBook</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">public</span><span class="o">:</span> <span class="w"> </span><span class="n">SimpleBook</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="w"> </span><span class="n">param_cim</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="n">cim</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">param_cim</span><span class="p">;}</span> <span class="w"> </span><span class="k">private</span><span class="o">:</span> <span class="w"> </span><span class="nl">std</span><span class="p">:</span><span class="n">string</span><span class="w"> </span><span class="n">cim</span><span class="p">;</span> <span class="p">};</span> </pre></div> <p>A programozó által definiált híján minden osztály és struktúra rendelkezik alapértelmezett konstruktorral (<code>típusnév()</code>), másolókonstruktorral (<code>típusnév([const] típusnév&amp;)</code>) és értékadó operátorral (<code>operator=([const] típusnév&amp;)</code>), ami egyszerű adatszerkezet esetén általában megfelelő és hatékony. </p> <div class="mw-heading mw-heading3"><h3 id="Függvények"><span id="F.C3.BCggv.C3.A9nyek"></span>Függvények</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=34" title="Szakasz szerkesztése: Függvények"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A függvény (function) a program olyan névvel ellátott egysége, amely a program bármely pontjából hívható. Általában olyan utasítássorozatokat tartalmaz, amelyekre gyakran van szükség, de ismételt megírásuk fárasztó vagy helyigényes. A hagyományos C++-program sok kis méretű, könnyen karbantartható függvényből épül fel. </p> <div class="mw-heading mw-heading4"><h4 id="Eljárás,_függvény"><span id="Elj.C3.A1r.C3.A1s.2C_f.C3.BCggv.C3.A9ny"></span>Eljárás, függvény</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=35" title="Szakasz szerkesztése: Eljárás, függvény"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A <a href="/wiki/Pascal_(programoz%C3%A1si_nyelv)" title="Pascal (programozási nyelv)">Pascal</a> nyelvben megkülönböztettünk függvényeket (function) és eljárásokat (procedure) aszerint, hogy volt-e visszatérési érték vagy sem. A C++-ban azonos módon definiálhatjuk a kettőt: </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="c1">//Eljárás, nincs visszatérési érték</span> <span class="kt">void</span><span class="w"> </span><span class="nf">func_1</span><span class="p">(){</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;Hello World!&quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">std</span><span class="o">:</span><span class="n">endl</span><span class="p">;</span><span class="w"> </span><span class="p">}</span> <span class="c1">//Függvény, string típusu visszatérési érték</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="w"> </span><span class="nf">func_2</span><span class="p">(){</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="s">&quot;Hello World!&quot;</span><span class="p">;</span><span class="w"> </span><span class="p">}</span> </pre></div> <p>A <code>void</code> a C++ általános típusa, a függvény neve elé írt típus a visszatérési értéket jelöli. A fenti példában tájékoztattuk a fordítót, hogy nem lesz visszatérési érték. A függvény neve után írt zárójelekben lehetnek a függvény paraméterei (ha vannak neki) </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="c1">//Kiírja a megadott karaktersorozatot</span> <span class="kt">void</span><span class="w"> </span><span class="nf">func</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="w"> </span><span class="n">msg</span><span class="p">){</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">msg</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span><span class="w"> </span><span class="p">}</span> </pre></div> <div class="mw-heading mw-heading4"><h4 id="Definíció,_deklaráció"><span id="Defin.C3.ADci.C3.B3.2C_deklar.C3.A1ci.C3.B3"></span>Definíció, deklaráció</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=36" title="Szakasz szerkesztése: Definíció, deklaráció"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A függvényhívás előtt meg kell adnunk a függvény deklarációját, ami jelzi a fordítónak, hogy egyáltalán létezik a függvény. A definíció nem feltétlenül esik egybe a deklarációval, a programon belül bárhol elhelyezkedhet. A deklarációban szerepelnie kell a visszatérési értéknek, a függvény nevének és paraméterlistájának. Ezeket együttesen (név és paraméterlista) aláírásnak (szignatúra) vagy a függvény prototípusának nevezzük. </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;iostream&gt;</span> <span class="c1">//deklaráció</span> <span class="kt">void</span><span class="w"> </span><span class="nf">func</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="w"> </span><span class="n">msg</span><span class="p">);</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="w"> </span><span class="nf">func_2</span><span class="p">();</span> <span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">argc</span><span class="p">,</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">argv</span><span class="p">[])</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="c1">//hívás</span> <span class="w"> </span><span class="n">func</span><span class="p">(</span><span class="s">&quot;Hello&quot;</span><span class="p">);</span> <span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">func_2</span><span class="p">();</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span> <span class="p">}</span> <span class="c1">//definíció</span> <span class="kt">void</span><span class="w"> </span><span class="nf">func</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="w"> </span><span class="n">msg</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">msg</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;}</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="w"> </span><span class="nf">func_2</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="k">return</span><span class="w"> </span><span class="s">&quot;Hello World!&quot;</span><span class="p">;}</span> </pre></div> <p>A főprogram a második függvény által visszaadott karaktersort átadta a <i>cout</i> <code>&lt;&lt;</code> operátorának, így a szöveg megjelenik a szabványos kimeneten. </p> <div class="mw-heading mw-heading4"><h4 id="Paraméterátadás"><span id="Param.C3.A9ter.C3.A1tad.C3.A1s"></span>Paraméterátadás</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=37" title="Szakasz szerkesztése: Paraméterátadás"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A C++-ban kétféle paraméterátadási mód van: </p> <ul><li>Érték szerinti, az átadott típusból másolat készül a memóriában, az eredeti értéket nem módosítja a függvény.</li> <li>Cím szerinti, paraméterként az átadott típus referenciája szerepel, a függvény módosíthatja a paramétereket.</li></ul> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="c1">//a és b összegével tér vissza</span> <span class="kt">int</span><span class="w"> </span><span class="nf">sum_1</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">b</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="k">return</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">b</span><span class="p">;}</span> <span class="c1">//az eredményt c-ben tárolja</span> <span class="kt">void</span><span class="w"> </span><span class="nf">sum_2</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">b</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="o">&amp;</span><span class="n">c</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="n">c</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">b</span><span class="p">;}</span> </pre></div> <p>A második változat harmadik paramétere nem <i>c</i> értéke, hanem a memóriában elfoglalt címe. </p><p>A C++-ban minden paraméterátadás érték szerint történik, de referenciák vagy mutatók átadásával azonos hatás érhető el, mint a referencia alapú nyelvekben. </p><p>Kis objektumok esetén (pl. egy <b>int</b>) az érték szerinti átadás általában hatékonyabb, de ha a függvénybeli módosításokat nem akarjuk elveszíteni, muszáj referenciaként vagy mutatóval átadni. Fordítva: nagy objektumok másolása általában költséges, így ha tehetjük, kerüljük, de ha nem adhatunk const referenciát valamiért, és nem akarjuk, hogy módosíthassa a függvény az objektumunkat, akkor kénytelenek vagyunk érték szerint átadni. Az ekkor (nagy objektumok másolásakor) fellépő költségek minimalizálásra több technika is született, ilyen például a Copy on Write (CoW, csak akkor másolunk ténylegesen, ha muszáj). </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">A</span> <span class="p">{</span> <span class="w"> </span><span class="k">public</span><span class="o">:</span> <span class="w"> </span><span class="n">A</span><span class="p">(){...}</span> <span class="w"> </span><span class="n">A</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="n">A</span><span class="w"> </span><span class="o">&amp;</span><span class="w"> </span><span class="n">a</span><span class="p">){...}</span> <span class="w"> </span><span class="o">~</span><span class="n">A</span><span class="p">(){...}</span> <span class="w"> </span><span class="p">...</span> <span class="w"> </span><span class="k">private</span><span class="o">:</span> <span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="w"> </span><span class="n">s</span><span class="p">,</span><span class="w"> </span><span class="n">k</span><span class="p">;</span> <span class="p">};</span> <span class="n">A</span><span class="w"> </span><span class="nf">func_val</span><span class="p">(</span><span class="n">A</span><span class="w"> </span><span class="n">a</span><span class="p">){</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">a</span><span class="p">;</span><span class="w"> </span><span class="p">}</span> <span class="n">A</span><span class="w"> </span><span class="nf">func_ref</span><span class="p">(</span><span class="n">A</span><span class="w"> </span><span class="o">&amp;</span><span class="w"> </span><span class="n">a</span><span class="p">){</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">a</span><span class="p">;</span><span class="w"> </span><span class="p">}</span> <span class="n">A</span><span class="w"> </span><span class="n">x</span><span class="p">;</span> <span class="n">func_val</span><span class="p">(</span><span class="n">x</span><span class="p">);</span> <span class="n">func_ref</span><span class="p">(</span><span class="n">x</span><span class="p">);</span> </pre></div> <p>A példában az első függvényhíváskor meghívódik az <b>A</b> osztály másoló konstruktora, hogy inicializálja a-t x-szel, majd a függvény által visszaadott objektumot is inicializálja, végül meghívódik a <a href="/wiki/Destruktor" title="Destruktor">destruktor</a> a-ra és a visszaadott objektumra. Eközben az <b>A</b> osztály tagjainak is meghívódik a konstruktoruk és a destruktoruk. </p><p>A második függvényhívás az objektum címét adja át, így csak a visszaadott példányt kell inicializálni. </p> <div class="mw-heading mw-heading4"><h4 id="Alapértelmezett_paraméterek"><span id="Alap.C3.A9rtelmezett_param.C3.A9terek"></span>Alapértelmezett paraméterek</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=38" title="Szakasz szerkesztése: Alapértelmezett paraméterek"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A függvénydefinícióban bizonyos paraméterekhez <a href="/wiki/Alap%C3%A9rtelmezett" class="mw-redirect" title="Alapértelmezett">alapértelmezett</a> értéket rendelhetünk. Ezt az értéket a program akkor használja, ha az adott argumentum nem szerepel a listában. Alapértelmezett értékkel rendelkező paraméter után csak ugyanilyen paraméterek szerepelhetnek a formális paraméterlistában. </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="kt">void</span><span class="w"> </span><span class="n">sayHello</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="w"> </span><span class="n">msg</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">&quot;Hello&quot;</span><span class="p">){</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">msg</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span><span class="w"> </span><span class="p">}</span> <span class="c1">//A függvény hívása</span> <span class="n">sayHello</span><span class="p">();</span> <span class="n">sayHello</span><span class="p">(</span><span class="s">&quot;Hello&quot;</span><span class="p">);</span> <span class="c1">//A kettő ugyanazt jelenti</span> </pre></div> <div class="mw-heading mw-heading4"><h4 id="Inline_függvények"><span id="Inline_f.C3.BCggv.C3.A9nyek"></span>Inline függvények</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=39" title="Szakasz szerkesztése: Inline függvények"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Inline függvény esetén a függvényhívás helyére a függvény kódja helyettesítődik be fordítási időben. Ezáltal megspórolható a függvényhívás költsége, viszont növekszik a tárgykód. Általában kis méretű, nem bonyolult függvények esetén használható hatékonyan. </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="kr">inline</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">sayHello</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;Hello&quot;</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;}</span> </pre></div> <p>Az inline definíció csak javaslat a fordítónak, amelyet nem muszáj figyelembe vennie. A legtöbb fordító a ciklust vagy rekurzív függvényhívást tartalmazó függvény esetén elutasítja az inline direktívát. </p> <div class="mw-heading mw-heading4"><h4 id="Lokális_változók"><span id="Lok.C3.A1lis_v.C3.A1ltoz.C3.B3k"></span>Lokális változók</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=40" title="Szakasz szerkesztése: Lokális változók"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A függvények belsejében (illetve a programban lévő blokkokon belül) deklarált változókat lokális változóknak nevezzük. Ez a gyakorlatban azt jelenti, hogy a láthatóságuk és élettartamuk a függvényen (blokkon) belülre korlátozódik. A lokális változók a függvényhívás végén automatikusan megsemmisülnek és kívülről nem hivatkozhatóak. </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="c1">//Két változó értékének cseréje</span> <span class="kt">void</span><span class="w"> </span><span class="nf">swap</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="o">&amp;</span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="o">&amp;</span><span class="n">b</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">tmp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">a</span><span class="p">;</span><span class="w"> </span><span class="c1">//nem dinamikusan (statikusan) lefoglalt változó</span> <span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">b</span><span class="p">;</span> <span class="w"> </span><span class="n">b</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">tmp</span><span class="p">;</span> <span class="p">}</span> <span class="n">tmp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">10</span><span class="p">;</span><span class="w"> </span><span class="c1">//Hiba, tmp nem hivatkozható a hatókörén (a függvény blokkján) kívül</span> </pre></div> <p>A dinamikus objektumokra mutató pointerek szintén megsemmisülnek a hatókörükből kikerülve, de az objektum maga nem. </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nf">createArray</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span> <span class="p">{</span> <span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">v</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="p">[</span><span class="n">n</span><span class="p">];</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">v</span><span class="p">;</span><span class="w"> </span><span class="c1">//A függvény egy n elemű tömbre mutató pointerrel tér vissza</span> <span class="p">}</span> <span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">t</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">createArray</span><span class="p">(</span><span class="mi">10</span><span class="p">);</span> <span class="n">t</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">12</span><span class="p">;</span><span class="w"> </span><span class="c1">//Működik, most t mutat a tömbre</span> <span class="n">v</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span><span class="w"> </span><span class="c1">//Hiba, v már nem létezik</span> </pre></div> <p>Ha nem gondoskodunk a blokkon belül létrehozott dinamikus objektum külső elérhetőségéről, az érvényes hivatkozás nélkül a memóriában marad, azaz memóriaszivárgás keletkezik. </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="kt">void</span><span class="w"> </span><span class="nf">func</span><span class="p">()</span> <span class="p">{</span> <span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">v</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="p">[</span><span class="mi">10</span><span class="p">];</span> <span class="p">}</span> <span class="n">v</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">12</span><span class="p">;</span> <span class="cm">/*Hiba, a tömbre mutató pointer már nem létezik,</span> <span class="cm"> és más sem mutat rá -&gt; memóriaszivárgás*/</span> </pre></div> <div class="mw-heading mw-heading4"><h4 id="Túlterhelés"><span id="T.C3.BAlterhel.C3.A9s"></span>Túlterhelés</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=41" title="Szakasz szerkesztése: Túlterhelés"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A túlterhelés leveszi a programozó válláról a sokféle név megjegyzésének terhét, mivel azonos névvel létezhet több függvény is. </p><p>Akkor beszélünk túlterhelésről, ha azonos látókörben (scope) több azonos nevű függvény van deklarálva, különböző szignatúrával. Egyébként, ha egy külső látókörben van a másik név, elfedésről van szó. </p><p>Túlterhelt függvény hívásakor a fordító kiválasztja a látható függvények közül a <i>legjobban</i> illeszkedőt, szignatúra alapján. A feloldási szabályok meglehetősen bonyolultak, így óvatosan kell túlterhelt nevet bevezetni. </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="k">struct</span><span class="w"> </span><span class="nc">Point</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">Point</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">X</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">Y</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="n">x</span><span class="p">(</span><span class="n">X</span><span class="p">),</span><span class="w"> </span><span class="n">y</span><span class="p">(</span><span class="n">Y</span><span class="p">)</span><span class="w"> </span><span class="p">{}</span> <span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">;</span> <span class="p">};</span> <span class="kt">double</span><span class="w"> </span><span class="nf">VectorLength</span><span class="p">(</span><span class="kt">int</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="p">);</span> <span class="kt">double</span><span class="w"> </span><span class="nf">VectorLength</span><span class="p">(</span><span class="n">Point</span><span class="p">);</span> <span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">()</span> <span class="p">{</span> <span class="w"> </span><span class="n">cout</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">VectorLength</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">)</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">endl</span><span class="p">;</span> <span class="w"> </span><span class="n">cout</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">VectorLength</span><span class="p">(</span><span class="n">Point</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">))</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">endl</span><span class="p">;</span><span class="w"> </span><span class="c1">//feltehetőleg mindkét függvény 5.0-t fog visszaadni</span> <span class="p">}</span> </pre></div> <div class="mw-heading mw-heading3"><h3 id="Kivételkezelés"><span id="Kiv.C3.A9telkezel.C3.A9s"></span>Kivételkezelés</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=42" title="Szakasz szerkesztése: Kivételkezelés"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Kivételnek (exception) azt a hibás állapotot vagy váratlan eseményt nevezzük, amely megszakítja a program rendes futását. A kivételkezelés lehetővé teszi, hogy a vezérlés ahhoz a programrészhez kerüljön, amely képes az adott kivétel kezelésére. A throw utasítás segítségével kivételt „dobhatunk”, amelyet a program „elkaphat” (catch). A C++ megszakításos modell alapján kezeli a kivételeket, azaz a kivételt kiváltó programrész futása megszakad. Három elem szükséges a kivételkezelés megvalósításához: </p> <ul><li>A kivételt kiváltható programrész kijelölése (try)</li> <li>A kivétel dobása (throw)</li> <li>A kivétel elkapása (catch)</li></ul> <p>A C++-ban kevés beépített kivétel található, de bármely típus dobható, így magunknak is definiálhatunk, ha szükséges. A kezelőig (a megfelelő típust elkapó catch a hívási sorban valahol feljebb) tartó minden automatikus változó megsemmisül destruktorhívással. </p><p>Ha kivételkezelés közben újabb kivétel keletkezik (például egy felszámolt változó destruktora dob – ez nagyon veszélyes) a futás eredménye definiálatlan, de általában katasztrofális. Érdekesség, hogy a C++ a statikus területen mindig fenntart akkora helyet, hogy a memóriafoglaló <tt>bad_alloc</tt> kivételét ki tudja váltani. </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="kt">void</span><span class="w"> </span><span class="nf">f</span><span class="p">(){</span><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="c1">//ez a függvény mindenképpen dob kivételt</span> <span class="k">try</span><span class="p">{</span> <span class="w"> </span><span class="n">f</span><span class="p">();</span><span class="w"> </span><span class="c1">//kivétel dobódik</span> <span class="p">}</span><span class="k">catch</span><span class="p">(</span><span class="kt">int</span><span class="p">){</span><span class="w"> </span><span class="c1">//elkapjuk</span> <span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cerr</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;Exception!</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">;</span> <span class="p">}</span> </pre></div> <p>Függvények esetében megadhatjuk, hogy milyen kivételeket továbbíthat: </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="kt">void</span><span class="w"> </span><span class="nf">f</span><span class="p">()</span><span class="w"> </span><span class="k">throw</span><span class="p">();</span><span class="w"> </span><span class="c1">//nem dobhat kivételt</span> <span class="kt">void</span><span class="w"> </span><span class="nf">g</span><span class="p">()</span><span class="w"> </span><span class="k">throw</span><span class="p">(</span><span class="kt">int</span><span class="p">);</span><span class="w"> </span><span class="c1">//int típusú kivételek</span> <span class="k">try</span><span class="p">{</span> <span class="w"> </span><span class="n">g</span><span class="p">();</span> <span class="p">}</span><span class="k">catch</span><span class="p">(</span><span class="kt">int</span><span class="p">){</span> <span class="w"> </span><span class="c1">//int típusú kivételek</span> <span class="p">}</span> <span class="p">...</span> <span class="w"> </span><span class="c1">//más kivételek elkapása</span> <span class="p">...</span> <span class="p">}</span><span class="k">catch</span><span class="p">(...){</span><span class="w"> </span><span class="c1">//minden kivétel elkapása, ez mindig az utolsó helyen áll</span> <span class="p">}</span> </pre></div> <div class="mw-heading mw-heading3"><h3 id="Dinamikus_memóriakezelés"><span id="Dinamikus_mem.C3.B3riakezel.C3.A9s"></span>Dinamikus memóriakezelés</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=43" title="Szakasz szerkesztése: Dinamikus memóriakezelés"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A dinamikus memóriahasználat alapgondolata, hogy adataink számára akkor foglalunk helyet, amikor szükség van rá, ha pedig feleslegessé válnak, azonnal felszabadítjuk a memóriaterületet. A C++-ban különösen fontos szerepe van, mivel nincs „<a href="/wiki/Szem%C3%A9tgy%C5%B1jt%C3%A9s" title="Szemétgyűjtés">szemétgyűjtő</a>”, mint a <a href="/wiki/Java_(programoz%C3%A1si_nyelv)" title="Java (programozási nyelv)">Javában</a> vagy <a href="/wiki/C_Sharp" title="C Sharp">C#</a>-ban. A felszabadítatlan memória „memóriaszivárgáshoz” (memory leak) vezethet. </p> <div class="mw-heading mw-heading4"><h4 id="A_new_és_delete_operátorok"><span id="A_new_.C3.A9s_delete_oper.C3.A1torok"></span>A new és delete operátorok</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=44" title="Szakasz szerkesztése: A new és delete operátorok"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A C++-ban lehetőség van használni a C nyelv malloc (és egyéb változatai) és free utasítását, de ajánlott az újakat alkalmazni. A new operátor az operandusban megadott típusnak megfelelő méretű területet foglal a memóriában, és arra mutató pointert ad vissza. A delete felszabadítja a new által lefoglalt területet: </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="n">v</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="kt">int</span><span class="p">;</span><span class="w"> </span><span class="c1">//helyfoglalás egy int-nek</span> <span class="k">delete</span><span class="w"> </span><span class="n">v</span><span class="p">;</span><span class="w"> </span><span class="c1">//felszabadítjuk</span> </pre></div> <p>Nemcsak egy elemnyi terület elfoglalására van lehetőség, hanem több egymás után elhelyezkedő elem számára is foglalhatunk területet. Ezt az adatstruktúrát dinamikus tömbnek nevezzük: </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="n">v</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="p">[</span><span class="mi">10</span><span class="p">];</span><span class="w"> </span><span class="c1">//helyfoglalás 10 db int-nek</span> <span class="k">delete</span><span class="p">[]</span><span class="w"> </span><span class="n">v</span><span class="p">;</span><span class="w"> </span><span class="c1">//felszabadítjuk</span> </pre></div> <p>Többdimenziós tömböt is foglalhatunk dinamikusan, ekkor a tömb elemei egy-egy pointerre mutatnak: </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="kt">int</span><span class="w"> </span><span class="o">**</span><span class="n">v</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="p">[</span><span class="mi">10</span><span class="p">];</span><span class="w"> </span><span class="c1">//10 db int-re mutató pointer</span> <span class="k">for</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="n">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">10</span><span class="p">;</span><span class="o">++</span><span class="n">i</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">v</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="p">[</span><span class="mi">10</span><span class="p">];</span><span class="w"> </span><span class="c1">// 10x10-es mátrix, v minden eleme 10 db int-re mutat</span> <span class="w"> </span><span class="k">for</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="n">j</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">10</span><span class="p">;</span><span class="o">++</span><span class="n">j</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">v</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">j</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">j</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="p">}</span> <span class="c1">//felszabadítjuk a mátrixot, minden egyes mutatót külön</span> <span class="k">for</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="n">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">10</span><span class="p">;</span><span class="o">++</span><span class="n">i</span><span class="p">){</span><span class="w"> </span><span class="k">delete</span><span class="p">[]</span><span class="w"> </span><span class="n">v</span><span class="p">[</span><span class="n">i</span><span class="p">];</span><span class="w"> </span><span class="p">}</span> <span class="k">delete</span><span class="p">[]</span><span class="w"> </span><span class="n">v</span><span class="p">;</span><span class="w"> </span><span class="c1">//végül magát v -t is</span> </pre></div> <p>Fontos, hogy minden new-hoz a megfelelő delete-et használjuk: </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="n">t</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="kt">int</span><span class="p">;</span> <span class="k">delete</span><span class="p">[]</span><span class="w"> </span><span class="n">t</span><span class="p">;</span><span class="w"> </span><span class="c1">//definiálatlan, a legjobb esetben lefoglalva marad a memória</span> <span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="n">v</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="kt">int</span><span class="p">[</span><span class="mi">10</span><span class="p">];</span> <span class="k">delete</span><span class="w"> </span><span class="n">v</span><span class="p">;</span><span class="w"> </span><span class="c1">//szintén definiálatlan.</span> </pre></div> <p>Az <code>malloc</code>-kal szemben a <code>new</code> nem csak területet foglal, de automatikusan meghívja a megfelelő konstruktorokat is. </p><p>Főleg nagy méretű adatok esetén előfordulhat, hogy nincs elég memória. Ekkor a C++ <code>std::bad_alloc</code> kivételt dob. </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="k">try</span><span class="p">{</span> <span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="n">t</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="kt">int</span><span class="p">[</span><span class="mi">10000</span><span class="p">];</span><span class="w"> </span><span class="c1">//40000 byte memóriát foglalunk</span> <span class="p">}</span><span class="k">catch</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">bad_alloc</span><span class="p">){</span> <span class="w"> </span><span class="c1">//Hibakezelés</span> <span class="p">}</span> </pre></div> <div class="mw-heading mw-heading2"><h2 id="Objektumorientált_C++"><span id="Objektumorient.C3.A1lt_C.2B.2B"></span>Objektumorientált C++</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=45" title="Szakasz szerkesztése: Objektumorientált C++"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <table class="dablink noprint noviewer" style="padding-left: 2em; vertical-align: middle;" cellpadding="0" cellspacing="0"><tbody><tr><td style="padding-right:.25em;"><span typeof="mw:File"><a href="/wiki/F%C3%A1jl:Searchtool_right.svg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/3/32/Searchtool_right.svg/14px-Searchtool_right.svg.png" decoding="async" width="14" height="14" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/3/32/Searchtool_right.svg/21px-Searchtool_right.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/3/32/Searchtool_right.svg/28px-Searchtool_right.svg.png 2x" data-file-width="60" data-file-height="60" /></a></span></td><td><i>Bővebben: <a href="/wiki/Objektumorient%C3%A1lt_programoz%C3%A1s" title="Objektumorientált programozás">Objektumorientált programozás</a></i></td></tr></tbody></table> <div class="mw-heading mw-heading3"><h3 id="Adattagok_és_tagfüggvények"><span id="Adattagok_.C3.A9s_tagf.C3.BCggv.C3.A9nyek"></span>Adattagok és tagfüggvények</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=46" title="Szakasz szerkesztése: Adattagok és tagfüggvények"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Az adattagokat a változókhoz hasonlóan deklaráljuk, de az adattagok nem tartalmazhatnak inicializációs listát. Ha egy osztályon belül egy másik osztályt akarunk adattagként használni, akkor előzőleg szerepelnie kell a másik osztály teljes deklarációjának. </p><p>Az adattagokon műveleteket végző tagfüggvényeket az osztály törzsében deklaráljuk. Ezen a függvény szignatúráját, vagy a helyben kifejtett implicit <b>inline</b> definícióját értjük (vagyis a függvény prototípusa előtt nem szerepel az inline kulcsszó). Az <b>inline</b> módosító megadásával az osztálydefiníción kívül definiált függvényeket is <b>inline</b>-ná tehetjük. </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">MyClass</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">public</span><span class="o">:</span> <span class="w"> </span><span class="n">MyClass</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">x</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">value</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">x</span><span class="p">;</span><span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="n">printValue</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">value</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="c1">//inline definíció</span> <span class="w"> </span><span class="k">private</span><span class="o">:</span> <span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">value</span><span class="p">;</span> <span class="p">};</span> </pre></div> <p>Amennyiben csak a deklarációt tartalmazza az osztály, a függvény törzsét azon kívül kell definiálni. A definíció sorrendben a visszatérési értékből, az osztály nevéből, a hatókör operátorból, a függvény szignatúrájából és törzséből áll: </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">MyClass</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">public</span><span class="o">:</span> <span class="w"> </span><span class="n">MyClass</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">x</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">value</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">x</span><span class="p">;</span><span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="n">doSomething</span><span class="p">();</span> <span class="w"> </span><span class="k">private</span><span class="o">:</span> <span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">value</span><span class="p">;</span> <span class="p">};</span> <span class="kt">void</span><span class="w"> </span><span class="nf">MyClass::doSomething</span><span class="p">(){</span><span class="w"> </span><span class="cm">/*do something*/</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="c1">//külső definíció</span> </pre></div> <p>Egy osztály bármely tagfüggvénye hozzáfér az adattagokhoz, függetlenül annak elérésétől. </p> <div class="mw-heading mw-heading3"><h3 id="Statikus_tagok">Statikus tagok</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=47" title="Szakasz szerkesztése: Statikus tagok"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A <b>static</b> kulcsszóval bevezetett adattagokból és tagfüggvényekből osztályszinten egy darab létezik. </p> <div class="mw-heading mw-heading3"><h3 id="Konstruktorok">Konstruktorok</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=48" title="Szakasz szerkesztése: Konstruktorok"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Az objektumok kezdeti értékadásaiért (inicializálás) speciális tagfüggvények, a konstruktorok felelnek. A konstruktor olyan tagfüggvény, amelynek neve megegyezik az osztályéval, és nem rendelkezik visszatérési típussal. </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">MyClass</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">public</span><span class="o">:</span> <span class="w"> </span><span class="n">MyClass</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="o">&amp;</span><span class="w"> </span><span class="n">data</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">data</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="c1">//Konstruktor</span> <span class="w"> </span><span class="k">private</span><span class="o">:</span> <span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">x</span><span class="p">;</span> <span class="p">};</span> <span class="n">MyClass</span><span class="o">*</span><span class="w"> </span><span class="n">mc</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">MyClass</span><span class="p">(</span><span class="mi">10</span><span class="p">);</span><span class="w"> </span><span class="c1">//mc-&gt;x egyenlő 10-zel</span> </pre></div> <p>A fordító minden olyan esetben, mikor egy objektum létrejön, meghívja a konstruktorát. Egy osztálynak bármennyi konstruktora lehet a szignatúrától függően. Alapértelmezés szerint minden osztály két konstruktorral rendelkezik, a paraméter nélküli <i>(default)</i> és a másoló <i>(copy)</i> konstruktorral. Ha saját konstruktort készítünk, attól fogva az alapértelmezett nem lesz elérhető. A konstruktorok egyaránt lehetnek <b>public</b>, <b>private</b> vagy <b>protected</b> elérésűek. A csak <b>private</b> konstruktorokat tartalmazó osztályt <i>rejtett osztály</i>nak nevezzük. </p><p>Ha az egyparaméteres konstruktorokkal rendelkező osztályok példányainak nem teljesen illeszkedő típust adunk kezdőértékül, akkor a fordító implicit típuskonverziót hajt végre. Ezt megtilthatjuk az <b>explicit</b> kulcsszó használatával: </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">MyClass</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">public</span><span class="o">:</span> <span class="w"> </span><span class="k">explicit</span><span class="w"> </span><span class="n">MyClass</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="o">&amp;</span><span class="w"> </span><span class="n">data</span><span class="p">){</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">data</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="c1">//csak int -et fogad el</span> <span class="w"> </span><span class="k">private</span><span class="o">:</span> <span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">x</span><span class="p">;</span> <span class="p">};</span> <span class="kt">void</span><span class="w"> </span><span class="nf">f</span><span class="p">()</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">MyClass</span><span class="w"> </span><span class="n">x</span><span class="p">;</span> <span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">3</span><span class="p">;</span><span class="w"> </span><span class="c1">//hiba! explicit kulcsszó miatt nincs konverzió</span> <span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">MyClass</span><span class="p">(</span><span class="mi">3</span><span class="p">);</span><span class="w"> </span><span class="c1">// jó</span> <span class="p">}</span> </pre></div> <p>Ha az objektum egy másik osztály példányát is tartalmazza, akkor a belső osztály konstruktorát a külső osztály konstruktorában hívjuk. Ezt a <b>taginicializációs lista</b> használatával oldhatjuk meg, amelyet a konstruktor szignatúrája után kettősponttal elválasztva adhatunk meg: </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">MyClass</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">public</span><span class="o">:</span> <span class="w"> </span><span class="n">MyClass</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="o">&amp;</span><span class="w"> </span><span class="n">data</span><span class="p">)</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="n">x</span><span class="p">(</span><span class="n">data</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="p">};</span> <span class="w"> </span><span class="k">private</span><span class="o">:</span> <span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">x</span><span class="p">;</span> <span class="p">};</span> </pre></div> <p>Taginicializációs listát csak a konstruktorban adhatunk meg. Használata kötelező, ha az osztály referencia típusú vagy paraméterezett típussal rendelkező adattagot tartalmaz. A konstans tagok beállítására is ezt használjuk: </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">MyClass</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">public</span><span class="o">:</span> <span class="w"> </span><span class="n">MyClass</span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="o">&amp;</span><span class="w"> </span><span class="n">d_data</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="o">&amp;</span><span class="w"> </span><span class="n">i_data</span><span class="p">)</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="n">y</span><span class="p">(</span><span class="n">d_data</span><span class="p">),</span><span class="w"> </span><span class="n">x</span><span class="p">(</span><span class="n">i_data</span><span class="p">)</span><span class="w"> </span><span class="p">{};</span> <span class="w"> </span><span class="k">private</span><span class="o">:</span> <span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">double</span><span class="w"> </span><span class="n">y</span><span class="p">;</span> <span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">x</span><span class="p">;</span> <span class="p">};</span> </pre></div> <div class="mw-heading mw-heading3"><h3 id="Destruktorok">Destruktorok</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=49" title="Szakasz szerkesztése: Destruktorok"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Az objektumok által felhasznált memória mindaddig lefoglalt marad, míg fel nem szabadítjuk. Erre a célra a C++ biztosít számunkra egy speciális tagfüggvényt, a destruktort. Hasonlóan a konstruktorhoz, a destruktornak sincs visszatérési értéke. A destruktornak nem lehetnek paraméterei. A destruktor nevét az osztály nevéből és a hullám karakterből (tilde: ~) képezzük: </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">MyClass</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">public</span><span class="o">:</span> <span class="w"> </span><span class="n">MyClass</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">val</span><span class="p">){</span><span class="w"> </span><span class="n">t</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="kt">int</span><span class="p">(</span><span class="n">val</span><span class="p">);</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="c1">//konstruktor</span> <span class="w"> </span><span class="o">~</span><span class="n">MyClass</span><span class="p">(){</span><span class="w"> </span><span class="k">delete</span><span class="w"> </span><span class="n">t</span><span class="p">;</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="c1">//destruktor</span> <span class="w"> </span><span class="k">private</span><span class="o">:</span> <span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">t</span><span class="p">;</span> <span class="p">};</span> </pre></div> <p>Ha nem definiálunk destruktort az osztályunkban, a fordító automatikusan létrehozza. A destruktor minden olyan esetben meghívódik, amikor az objektum érvényessége megszűnik. Kivételt képeznek a dinamikusan (a <code>new</code> operátorral) létrehozott példányok, amelyek destruktorát csak a megfelelő <code>delete</code> operátor hívhatja meg. A destruktor közvetlenül is hívható. </p><p>Dinamikus tömbök esetén a konstruktorok az indexek növekvő sorrendjében hívódnak meg, a destruktorok éppen fordítva, de csak a <code>delete[]</code> operátor alkalmazásával. A statikus tömbök ugyanígy törlődnek, de automatikusan (tehát nem kell <code>delete</code>), amint kikerülnek a hatókörükből. A nem megfelelő <code>delete</code> használatával a legjobb esetben is csak a tömb első eleme semmisül meg. </p> <div class="mw-heading mw-heading3"><h3 id="Példányosítás"><span id="P.C3.A9ld.C3.A1nyos.C3.ADt.C3.A1s"></span>Példányosítás</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=50" title="Szakasz szerkesztése: Példányosítás"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Egy osztály egy memóriában létrehozott példányát objektumnak nevezzük. Minden objektum rendelkezik a neki megfelelő osztály minden egyes adattagjával (természetesen az egyes példányok külön másolatokat birtokolnak, kivéve a statikus tagokat) és tagfüggvényével. Egy objektumot létrehozhatunk <i>dinamikusan</i> és <i>statikusan</i> is. </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">MyClass</span><span class="p">{</span><span class="w"> </span><span class="p">...</span><span class="w"> </span><span class="p">};</span> <span class="n">MyClass</span><span class="w"> </span><span class="n">my_static_object</span><span class="p">;</span><span class="w"> </span><span class="c1">//statikus definíció</span> <span class="n">MyClass</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">my_dynamic_object</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">MyClass</span><span class="p">();</span><span class="w"> </span><span class="c1">//dinamikus definíció</span> </pre></div> <p>A két esetben a tagok elérése különbözik. Statikus definíció esetén a pont (<code>.</code>) operátort, míg dinamikus esetben a nyíl (<code>-&gt;</code>) operátort használjuk. </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="n">my_static_object</span><span class="p">.</span><span class="n">member_func</span><span class="p">();</span> <span class="n">my_dynamic_object</span><span class="o">-&gt;</span><span class="n">member_func</span><span class="p">();</span> </pre></div> <div class="mw-heading mw-heading3"><h3 id="Öröklődés"><span id=".C3.96r.C3.B6kl.C5.91d.C3.A9s"></span>Öröklődés</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=51" title="Szakasz szerkesztése: Öröklődés"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Az öröklődés az objektumorientált stílus meghatározó eleme, amely a kód-újrafelhasználást és a dinamikus típuskezelést teszi támogatottá. C++-ban az eszköztára az absztrakt metódusok, a (többszörös) öröklődés és a virtual kulcsszó. </p><p>Absztraktnak nevezünk egy osztályt, ha van legalább egy absztrakt tagfüggvénye (ezt a függvénydeklaráció után tett <code>= 0</code>-val jelezzük), ekkor az osztály nem példányosítható. </p><p>Az öröklés úgy hoz létre új objektumot, hogy az megtartja az őse minden adattagját és (az ősosztályban nem private) tagfüggvényét. </p><p>Segítségével nem kell ismernünk egy objektum pontos típusát, mutatókon és referenciákon keresztül dinamikus kötésű műveleteket hívhatunk meg (polimorfizmus – többalakúság). </p><p>Hatékonysági okok miatt C++-ban minden függvény statikus, ha nincs explicit megmondva a <code>virtual</code> kulcsszóval ott vagy a bázisosztályban. </p> <div class="mw-heading mw-heading4"><h4 id="Öröklés_láthatósága"><span id=".C3.96r.C3.B6kl.C3.A9s_l.C3.A1that.C3.B3s.C3.A1ga"></span>Öröklés láthatósága</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=52" title="Szakasz szerkesztése: Öröklés láthatósága"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Az öröklődés lehet public, ez a bázisosztály osztály specializációja, protected illetve private, ekkor a származás nem lesz kívülről látható, azaz le kell mondanunk a dinamikus típusazonosításról, de egyébiránt teljes értékű öröklődés. </p> <div class="mw-heading mw-heading4"><h4 id="Névütközések"><span id="N.C3.A9v.C3.BCtk.C3.B6z.C3.A9sek"></span>Névütközések</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=53" title="Szakasz szerkesztése: Névütközések"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Ha az ős és a származtatott osztályban szerepel ugyanolyan néven függvény, akkor nincs túlterhelés, a származtatott elfedi azokat, a névtér-szabályok miatt. A nem virtuális függvények ellenben fordítási időben kötődnek, így ősosztályra mutató pointeren keresztül minden nem virtuális függvényhívás az ősosztálybelit fogja végrehajtani, függetlenül a mutatott objektum dinamikus típusától. </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="k">struct</span><span class="w"> </span><span class="nc">A</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">virtual</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">print1</span><span class="p">()</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">cout</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;A&quot;</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">print2</span><span class="p">()</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">cout</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;A&quot;</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="k">virtual</span><span class="w"> </span><span class="o">~</span><span class="n">A</span><span class="p">()</span><span class="w"> </span><span class="p">{}</span><span class="w"> </span><span class="c1">//ökölszabály: bázisosztályban _mindig_ legyen virtuális a destruktor, a delete operátor így tudja megfelelően megsemmisíteni az objektumot</span> <span class="p">};</span> <span class="k">struct</span><span class="w"> </span><span class="nc">B</span><span class="o">:</span><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="n">A</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">//public alapértelmezett: nem kötelező</span> <span class="w"> </span><span class="k">virtual</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">print1</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">//virtual-t származtatottban nem kötelező kitenni</span> <span class="w"> </span><span class="n">cout</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;B&quot;</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">print2</span><span class="p">()</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">cout</span><span class="w"> </span><span class="o">&lt;&lt;</span><span class="w"> </span><span class="s">&quot;B&quot;</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="p">};</span> <span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">()</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">A</span><span class="o">*</span><span class="w"> </span><span class="n">p</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">B</span><span class="p">;</span> <span class="w"> </span><span class="n">p</span><span class="o">-&gt;</span><span class="n">print1</span><span class="p">();</span><span class="w"> </span><span class="c1">//&quot;B&quot;</span> <span class="w"> </span><span class="n">p</span><span class="o">-&gt;</span><span class="n">print2</span><span class="p">();</span><span class="w"> </span><span class="c1">//&quot;A&quot;</span> <span class="w"> </span><span class="k">delete</span><span class="w"> </span><span class="n">p</span><span class="p">;</span> <span class="p">}</span> </pre></div> <div class="mw-heading mw-heading2"><h2 id="Generikus_C++"><span id="Generikus_C.2B.2B"></span>Generikus C++</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=54" title="Szakasz szerkesztése: Generikus C++"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-heading mw-heading3"><h3 id="A_generikus_programozásról"><span id="A_generikus_programoz.C3.A1sr.C3.B3l"></span>A generikus programozásról</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=55" title="Szakasz szerkesztése: A generikus programozásról"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A generikus programozás az alapvetően típusfüggetlen algoritmusok (pl. rendezések) és általános célú tároló szerkezetek (pl. listák) létrehozásán alapuló programozási stílus, a generikus programozási nyelv pedig az, ami ezt nyelvi eszközökkel támogatja. </p> <div class="mw-heading mw-heading3"><h3 id="A_template_kulcsszó"><span id="A_template_kulcssz.C3.B3"></span>A template kulcsszó</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=56" title="Szakasz szerkesztése: A template kulcsszó"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A C++ közvetlenül támogatja ezt a programozási stílust, a <code>template</code> kulcsszóval, mely osztályok és függvények elé egyaránt beszúrható. A formális paraméterek a <code>template</code> után &lt;&gt;-ben sorolandók fel, típusuk lehet konkrét típus (pl. int) vagy típusparaméter, ezt a <code>typename</code> kulcsszóval jelöljük. </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="c1">//sablon-osztály</span> <span class="k">template</span><span class="w"> </span><span class="o">&lt;</span><span class="k">typename</span><span class="w"> </span><span class="nc">T</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">size</span><span class="o">&gt;</span> <span class="k">class</span><span class="w"> </span><span class="nc">MyBuff</span><span class="w"> </span><span class="p">{</span> <span class="k">public</span><span class="o">:</span> <span class="w"> </span><span class="n">MyBuff</span><span class="p">()</span><span class="w"> </span><span class="p">{}</span> <span class="w"> </span><span class="n">T</span><span class="w"> </span><span class="n">GetItem</span><span class="p">(</span><span class="kt">int</span><span class="p">);</span> <span class="k">private</span><span class="o">:</span> <span class="w"> </span><span class="n">T</span><span class="w"> </span><span class="n">buf</span><span class="p">[</span><span class="n">size</span><span class="p">];</span> <span class="p">};</span> <span class="k">template</span><span class="o">&lt;</span><span class="k">typename</span><span class="w"> </span><span class="nc">T</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">size</span><span class="o">&gt;</span> <span class="n">T</span><span class="w"> </span><span class="n">MyBuff</span><span class="o">&lt;</span><span class="n">T</span><span class="p">,</span><span class="w"> </span><span class="n">size</span><span class="o">&gt;::</span><span class="n">GetItem</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">num</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">buf</span><span class="p">[</span><span class="n">num</span><span class="p">];</span> <span class="p">}</span> </pre></div> <p>A tagfüggvények és az osztályon belül deklarált osztályok maguk is sablonok, kifejthetők az osztályon kívül is, ekkor jelezni kell a teljes sablonszignatúrát (pl. GetItem). Az osztálysablon nem implicit inline tagfüggvényeit minden olyan forrásállományba be kell építenünk, amelyből azokat hívjuk (bevett szokás az osztályt és tagfüggvényeit egyetlen fejállományban elhelyezni). </p><p>A sablondeklarációban <code>typename</code> helyett írható <code>class</code> is, a kettő között nincs különbség. Amikor a fordító számára nem egyértelmű, hogy típussal van dolga, akkor a typename/struct/class szóval jelezhetjük ezt: </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="k">template</span><span class="w"> </span><span class="o">&lt;</span><span class="k">class</span><span class="w"> </span><span class="nc">T</span><span class="o">&gt;</span> <span class="kt">void</span><span class="w"> </span><span class="n">func</span><span class="p">()</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">typename</span><span class="w"> </span><span class="nc">T</span><span class="o">::</span><span class="n">iterator</span><span class="w"> </span><span class="n">ti</span><span class="p">;</span> <span class="p">}</span> </pre></div> <p>A fenti példában a T típus még nem jött létre, ezért tudatnunk kell a fordítóval a létezését. </p><p>Az osztály példányosításakor ki kell írni a paramétereket az osztály neve után. </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="kt">void</span><span class="w"> </span><span class="nf">f</span><span class="p">()</span><span class="w"> </span><span class="p">{</span> <span class="c1">//...</span> <span class="w"> </span><span class="n">MyBuff</span><span class="o">&lt;</span><span class="kt">int</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="o">&gt;</span><span class="w"> </span><span class="n">IntBuff</span><span class="p">;</span> <span class="c1">//...</span> <span class="p">}</span> </pre></div> <p>Sablonfüggvény hívásakor a fordító a paraméterek típusából megállapítja T aktuális értékét, nem kell explicit kiírni. </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="c1">//sablon-függvény</span> <span class="k">template</span><span class="o">&lt;</span><span class="k">typename</span><span class="w"> </span><span class="nc">T</span><span class="o">&gt;</span> <span class="kt">void</span><span class="w"> </span><span class="n">sort</span><span class="p">(</span><span class="n">vector</span><span class="o">&lt;</span><span class="n">T</span><span class="o">&gt;&amp;</span><span class="w"> </span><span class="n">v</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="c1">//valamely rendező algoritmus</span> <span class="p">}</span> <span class="c1">//...</span> <span class="kt">void</span><span class="w"> </span><span class="n">func</span><span class="p">(</span><span class="n">vector</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;&amp;</span><span class="w"> </span><span class="n">vekt</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">sort</span><span class="p">(</span><span class="n">vekt</span><span class="p">);</span> <span class="p">}</span> </pre></div> <div class="mw-heading mw-heading3"><h3 id="Példányosulás"><span id="P.C3.A9ld.C3.A1nyosul.C3.A1s"></span>Példányosulás</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=57" title="Szakasz szerkesztése: Példányosulás"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A sablonok fordítási időben példányosulnak, így a fordítónak ismernie kell a típusparaméterek típusát, a konkrét típusú paramétereknek konstansnak kell lenniük. A hibát legkésőbb szerkesztéskor jeleznie kell a fordítónak. Mivel csak a használt sablonok példányosulnak, ezért kódtakarékos megoldás lehet a generikus programozás, de akár összetettebb megoldások is elképzelhetők (jellemző példa a &lt; operátor, melyet nem lehet minden típushoz értelmesen biztosítani, ezért a list::sort fordítási hibát okoz ilyenekből épített listára, de listát magát létre lehet hozni). Rossz tervezés esetén azonban nagyon elszaporodhatnak az egymástól alig különböző függvények kódjai. A fordító felismeri a MyBuff&lt;int, 10&gt; és MyBuff&lt;int, 10+2-2&gt; közötti azonosságot. </p> <div class="mw-heading mw-heading3"><h3 id="Típusazonosságok"><span id="T.C3.ADpusazonoss.C3.A1gok"></span>Típusazonosságok</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=58" title="Szakasz szerkesztése: Típusazonosságok"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Két sablon pontosan akkor azonos típusú, ha a sablon-paramétereik azonosak, egyéb esetekben teljesen különálló típusok. Ez magával vonja, hogy a sablonok teljesen függetlenek az osztályhierarchiától. A sablon nem terhelhető túl a paramétereire, de specializációt lehet adni, konkrét típusokra/értékekre. </p> <div class="mw-heading mw-heading3"><h3 id="Template_metaprogramok">Template metaprogramok</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=59" title="Szakasz szerkesztése: Template metaprogramok"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A sablonokkal fordítási idejű programokat lehet írni, és ez a nyelv Turing-teljes, azaz minden számítógéppel megoldható problémára alkalmazható.<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">&#91;</span>4<span class="cite-bracket">&#93;</span></a></sup> Példaként tekintsük a <a href="/wiki/Faktori%C3%A1lis" title="Faktoriális">faktoriális</a> számítást! </p> <div class="mw-highlight mw-highlight-lang-cpp mw-content-ltr" dir="ltr"><pre><span></span><span class="k">template</span><span class="w"> </span><span class="o">&lt;</span><span class="kt">int</span><span class="w"> </span><span class="n">N</span><span class="o">&gt;</span> <span class="k">struct</span><span class="w"> </span><span class="nc">Faktor</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">enum</span><span class="w"> </span><span class="p">{</span><span class="n">value</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">N</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">Faktor</span><span class="o">&lt;</span><span class="n">N</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="o">&gt;::</span><span class="n">value</span><span class="p">};</span> <span class="p">};</span> <span class="k">template</span><span class="w"> </span><span class="o">&lt;&gt;</span> <span class="k">struct</span><span class="w"> </span><span class="nc">Faktor</span><span class="o">&lt;</span><span class="mi">0</span><span class="o">&gt;</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">enum</span><span class="w"> </span><span class="p">{</span><span class="n">value</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">};</span> <span class="p">};</span> <span class="c1">// Faktor&lt;4&gt;::value == 24</span> <span class="c1">// Faktor&lt;0&gt;::value == 1</span> <span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">()</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">Faktor</span><span class="o">&lt;</span><span class="mi">4</span><span class="o">&gt;::</span><span class="n">value</span><span class="p">;</span><span class="w"> </span><span class="c1">// == 24</span> <span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">y</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">Faktor</span><span class="o">&lt;</span><span class="mi">0</span><span class="o">&gt;::</span><span class="n">value</span><span class="p">;</span><span class="w"> </span><span class="c1">// == 1</span> <span class="p">}</span> </pre></div> <div class="mw-heading mw-heading2"><h2 id="Jegyzetek">Jegyzetek</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=60" title="Szakasz szerkesztése: Jegyzetek"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <ol class="references"> <li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text"><span class="citation"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20080617183013/http://www.research.att.com/~bs/bs_faq.html#history"><i>C++ története</i></a>.&#32;[2008. június 17-i dátummal az <a rel="nofollow" class="external text" href="http://www.research.att.com/~bs/bs_faq.html#history">eredetiből</a> archiválva].&#32;(Hozzáférés: 2009. május 19.)</span></span> </li> <li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text"><span class="citation"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20090603044704/http://www.parashift.com/c++-faq-lite/coding-standards.html#faq-27.4#faq-27.4"><i>C++ szabványos fejállományok elnevezése</i></a>.&#32;[2009. június 3-i dátummal az <a rel="nofollow" class="external text" href="http://www.parashift.com/c++-faq-lite/coding-standards.html#faq-27.4">eredetiből</a> archiválva].&#32;(Hozzáférés: 2009. május 31.)</span></span> </li> <li id="cite_note-3"><span class="mw-cite-backlink"><a href="#cite_ref-3">↑</a></span> <span class="reference-text"><span class="citation"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20080617183013/http://www.research.att.com/~bs/bs_faq.html#name"><i>C++ név eredete</i></a>.&#32;[2008. június 17-i dátummal az <a rel="nofollow" class="external text" href="http://www.research.att.com/~bs/bs_faq.html#name">eredetiből</a> archiválva].&#32;(Hozzáférés: 2009. május 19.)</span></span> </li> <li id="cite_note-4"><span class="mw-cite-backlink"><a href="#cite_ref-4">↑</a></span> <span class="reference-text"><span class="citation"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20060918135742/http://osl.iu.edu/~tveldhui/papers/2003/turing.pdf#"><i>Template metaprogramozás Turing-teljes</i></a>.&#32;[2006. szeptember 18-i dátummal az <a rel="nofollow" class="external text" href="http://osl.iu.edu/~tveldhui/papers/2003/turing.pdf#">eredetiből</a> archiválva].&#32;(Hozzáférés: 2010. január 22.)</span></span> </li> </ol> <div class="mw-heading mw-heading2"><h2 id="Források"><span id="Forr.C3.A1sok"></span>Források</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=61" title="Szakasz szerkesztése: Források"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li>Bjarne Stroustrup: A C++ programozási nyelv</li> <li>Scott Meyers: Hatékony C++</li> <li>Stephen C. Dewhurst: C++ hibaelhárító</li> <li>Tóth Bertalan, Lapteva Natalia: Programozzunk C++ nyelven</li></ul> <div class="mw-heading mw-heading2"><h2 id="További_információk"><span id="Tov.C3.A1bbi_inform.C3.A1ci.C3.B3k"></span>További információk</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=62" title="Szakasz szerkesztése: További információk"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-heading mw-heading3"><h3 id="Magyarul">Magyarul</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=63" title="Szakasz szerkesztése: Magyarul"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a rel="nofollow" class="external text" href="https://web.archive.org/web/20080125172312/http://www.eet.bme.hu/publications/e_books/progr/cpp/index.html">C++ segédlet</a></li></ul> <div class="mw-heading mw-heading3"><h3 id="Angolul">Angolul</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=C%2B%2B&amp;action=edit&amp;section=64" title="Szakasz szerkesztése: Angolul"><span>szerkesztés</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a rel="nofollow" class="external text" href="http://www.stroustrup.com/bs_faq.html">Bjarne Stroustrup's FAQ</a></li> <li><a rel="nofollow" class="external text" href="http://dmoz.org/Computers/Programming/Languages/C%2b%2b/">Open Directory on C++</a></li> <li><a rel="nofollow" class="external text" href="https://web.archive.org/web/20080418050500/http://incubator.apache.org/stdcxx/doc/">Apache C++ Standard Library Documentation</a></li> <li><a rel="nofollow" class="external text" href="https://web.archive.org/web/20070513105449/http://www.dinkumware.com/manuals/">Dinkumware's C++ Library Reference Manual</a></li> <li><a rel="nofollow" class="external text" href="http://cppreference.com/">C/C++ Reference</a></li> <li><a rel="nofollow" class="external text" href="http://www.open-std.org/jtc1/sc22/wg21/">Standards Committee Page: JTC1/SC22/WG21 – C++</a></li> <li><a rel="nofollow" class="external text" href="https://web.archive.org/web/20130926003448/http://www.codepedia.com/1/Cpp">CodePedia C++ main page</a></li> <li><a rel="nofollow" class="external text" href="http://cmeerw.org/prog/freecpp/">A Compiler-Comparison chart</a></li> <li><b>Tutorialok</b> <ul><li><a rel="nofollow" class="external text" href="http://www.cplusplus.com/doc/">C++ Language Tutorial</a></li> <li><a rel="nofollow" class="external text" href="http://www.icce.rug.nl/documents/cplusplus/">The C++ Annotations</a> – for those transitioning from C, Perl, etc.</li></ul></li> <li><b>Támogatás</b> <ul><li><a rel="nofollow" class="external text" href="http://www.parashift.com/c%2B%2B-faq-lite/">C++ FAQ Lite by Marshall Cline</a></li> <li><a rel="nofollow" class="external text" href="news://comp.lang.c++">comp.lang.c++</a>, <a rel="nofollow" class="external text" href="news://comp.lang.c++.moderated">comp.lang.c++.moderated</a>, <a rel="nofollow" class="external text" href="news://comp.std.c++">comp.std.c++</a> Newsgroups</li></ul></li> <li><b>Kódok és könyvtárak</b> <ul><li><a rel="nofollow" class="external text" href="http://csourcesearch.net/">Searchable Open Source C/C++ Code Archive</a></li> <li><a rel="nofollow" class="external text" href="http://www.gnu.org/software/commoncpp/">Portable foundation classes from GNU</a></li></ul></li> <li><b>Egyéb</b> <ul><li><a rel="nofollow" class="external text" href="https://web.archive.org/web/20070510055959/http://www.freebyte.com/programming/cpp/">links to C++ Tools</a></li> <li><a rel="nofollow" class="external text" href="http://www.robertnz.net/cpp_site.html">A categorized list of C++ related links</a></li></ul></li></ul> <div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r26593303">.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}</style><style data-mw-deduplicate="TemplateStyles:r26641489">.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{width:100%;line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}</style></div><div role="navigation" class="navbox" aria-labelledby="Főbb_programozási_nyelvek" style="padding:3px"><table class="nowraplinks hlist mw-collapsible mw-autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><div class="navbar noprint hlist plainlinks mini" style=";;background:none transparent;border:none;box-shadow:none;padding:0;;font-size:xx-small"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r26593303" /><span style="display:none"><a href="/wiki/Sablon:F%C5%91bb_programoz%C3%A1si_nyelvek" title="Sablon:Főbb programozási nyelvek">Sablon:Főbb programozási nyelvek</a></span><ul style="display:inline"><li class="nv-view"><a class="external text" href="https://hu.wikipedia.org/wiki/Sablon:F%C5%91bb_programoz%C3%A1si_nyelvek"><span title="Mutasd ezt a sablont" style=";;background:none transparent;border:none;box-shadow:none;padding:0;">m</span></a></li> <li class="nv-talk"><a class="external text" href="https://hu.wikipedia.org/wiki/Sablonvita:F%C5%91bb_programoz%C3%A1si_nyelvek"><span title="A sablon vitalapja" style=";;background:none transparent;border:none;box-shadow:none;padding:0;">v</span></a></li> <li class="nv-edit"><a class="external text" href="https://hu.wikipedia.org/w/index.php?title=Sablon:F%C5%91bb_programoz%C3%A1si_nyelvek&amp;action=edit"><span title="A sablon szerkesztése" style=";;background:none transparent;border:none;box-shadow:none;padding:0;">sz</span></a></li></ul></div><div id="Főbb_programozási_nyelvek" style="font-size:114%;margin:0 4em">Főbb programozási nyelvek</div></th></tr><tr><td colspan="2" class="navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/ABAP" title="ABAP">ABAP</a></li> <li><a href="/wiki/Ada_(programoz%C3%A1si_nyelv)" title="Ada (programozási nyelv)">Ada</a></li> <li><a href="/wiki/ALGOL" title="ALGOL">ALGOL</a></li> <li><a href="/wiki/APL" title="APL">APL</a></li> <li><a href="/wiki/Assembly" title="Assembly">Assembly</a></li> <li><a href="/wiki/Asymptote" title="Asymptote">Asymptote</a></li> <li><a href="/wiki/Awk" title="Awk">Awk</a></li> <li><a href="/wiki/BASIC" title="BASIC">BASIC</a></li> <li><a class="mw-selflink selflink">C++</a></li> <li><a href="/wiki/Clipper_(programoz%C3%A1si_nyelv)" title="Clipper (programozási nyelv)">Clipper</a></li> <li><a href="/wiki/COBOL" title="COBOL">COBOL</a></li> <li><a href="/wiki/C_(programoz%C3%A1si_nyelv)" title="C (programozási nyelv)">C</a></li> <li><a href="/wiki/C_Sharp" title="C Sharp">C#</a></li> <li><a href="/wiki/Eiffel_(programoz%C3%A1si_nyelv)" title="Eiffel (programozási nyelv)">Eiffel</a></li> <li><a href="/wiki/F_Sharp" title="F Sharp">F#</a></li> <li><a href="/wiki/Fortran" title="Fortran">Fortran</a></li> <li><a href="/wiki/Haskell_(programoz%C3%A1si_nyelv)" title="Haskell (programozási nyelv)">Haskell</a></li> <li><a href="/wiki/IBM_RPG" title="IBM RPG">RPG</a></li> <li><a href="/wiki/Java_(programoz%C3%A1si_nyelv)" title="Java (programozási nyelv)">Java</a></li> <li><a href="/wiki/JavaScript" title="JavaScript">JavaScript</a></li> <li><a href="/wiki/Lisp_(programoz%C3%A1si_nyelv)" title="Lisp (programozási nyelv)">Lisp</a></li> <li><a href="/wiki/Logo_(programoz%C3%A1si_nyelv)" title="Logo (programozási nyelv)">Logo</a></li> <li><a href="/wiki/Modula-2_(programoz%C3%A1si_nyelv)" title="Modula-2 (programozási nyelv)">Modula-2</a></li> <li><a href="/wiki/MATLAB" title="MATLAB">MATLAB</a></li> <li><a href="/w/index.php?title=MUMPS&amp;action=edit&amp;redlink=1" class="new" title="MUMPS (a lap nem létezik)">MUMPS</a></li> <li><a href="/wiki/Objective-C" title="Objective-C">Objective-C</a></li> <li><a href="/wiki/Object_Pascal" title="Object Pascal">Delphi</a></li> <li><a href="/wiki/Pascal_(programoz%C3%A1si_nyelv)" title="Pascal (programozási nyelv)">Pascal</a></li> <li><a href="/wiki/Perl_(programoz%C3%A1si_nyelv)" title="Perl (programozási nyelv)">Perl</a></li> <li><a href="/wiki/PHP" title="PHP">PHP</a></li> <li><a href="/wiki/PL/I" title="PL/I">PL/I</a></li> <li><a href="/wiki/PL/SQL" title="PL/SQL">PL/SQL</a></li> <li><a href="/wiki/Python_(programoz%C3%A1si_nyelv)" title="Python (programozási nyelv)">Python</a></li> <li><a href="/w/index.php?title=SAS_programoz%C3%A1si_nyelv&amp;action=edit&amp;redlink=1" class="new" title="SAS programozási nyelv (a lap nem létezik)">SAS</a></li> <li><a href="/wiki/Scheme" title="Scheme">Scheme</a></li> <li><a href="/wiki/Scratch" title="Scratch">Scratch</a></li> <li><a href="/wiki/Bash" title="Bash">sh</a></li> <li><a href="/wiki/Simula" title="Simula">Simula</a></li> <li><a href="/wiki/Smalltalk" title="Smalltalk">Smalltalk</a></li> <li><a href="/wiki/SML" title="SML">SML</a></li> <li><a href="/wiki/Visual_Basic" title="Visual Basic">Visual Basic</a></li> <li><a href="/wiki/Programoz%C3%A1si_nyelvek_list%C3%A1ja_bet%C5%B1rendben" title="Programozási nyelvek listája betűrendben">további nyelvek...</a></li></ul> </div></td></tr><tr><td class="navbox-abovebelow" colspan="2"><div><span typeof="mw:File"><span title="List-Class article"><img alt="List-Class article" src="//upload.wikimedia.org/wikipedia/commons/thumb/d/db/Symbol_list_class.svg/16px-Symbol_list_class.svg.png" decoding="async" width="16" height="16" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/d/db/Symbol_list_class.svg/24px-Symbol_list_class.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/d/db/Symbol_list_class.svg/32px-Symbol_list_class.svg.png 2x" data-file-width="180" data-file-height="185" /></span></span> Listák: <a href="/wiki/Programoz%C3%A1si_nyelvek_list%C3%A1ja_bet%C5%B1rendben" title="Programozási nyelvek listája betűrendben">betűrendes</a> <span typeof="mw:File"><span title="Category"><img alt="Category" src="//upload.wikimedia.org/wikipedia/commons/thumb/4/48/Folder_Hexagonal_Icon.svg/16px-Folder_Hexagonal_Icon.svg.png" decoding="async" width="16" height="14" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/4/48/Folder_Hexagonal_Icon.svg/24px-Folder_Hexagonal_Icon.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/4/48/Folder_Hexagonal_Icon.svg/32px-Folder_Hexagonal_Icon.svg.png 2x" data-file-width="36" data-file-height="31" /></span></span> <a href="/wiki/Kateg%C3%B3ria:Programoz%C3%A1si_nyelvek" title="Kategória:Programozási nyelvek">Kategória</a></div></td></tr></tbody></table></div> <div class="navbox-styles"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r26593303" /><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r26641489" /><style data-mw-deduplicate="TemplateStyles:r26643308">@media screen and (max-width:719px){.mw-parser-output div.navbox.authoritycontrol{display:block}.mw-parser-output .authoritycontrol tbody,.mw-parser-output .authoritycontrol tr,.mw-parser-output .authoritycontrol th,.mw-parser-output .authoritycontrol td,.mw-parser-output .authoritycontrol .navbox-row>th+td{display:block;text-align:center}.mw-parser-output .authoritycontrol .navbox-list-with-group{border:none}}</style><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r26593303" /></div><div role="navigation" class="navbox authoritycontrol" aria-labelledby="Nemzetközi_katalógusok" style="padding:3px"><table class="nowraplinks hlist navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th id="Nemzetközi_katalógusok" scope="row" class="navbox-group" style="width:auto"><a href="/wiki/Sablon:Nemzetk%C3%B6zi_katal%C3%B3gusok/doc" title="Sablon:Nemzetközi katalógusok/doc">Nemzetközi katalógusok</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Kongresszusi_K%C3%B6nyvt%C3%A1r" title="Kongresszusi Könyvtár">LCCN</a>: <span class="uid"><a rel="nofollow" class="external text" href="http://lccn.loc.gov/sh87007505">sh87007505</a></span></li> <li><a href="/wiki/Integr%C3%A1lt_katal%C3%B3gust%C3%A1r" title="Integrált katalógustár">GND</a>: <span class="uid"><a rel="nofollow" class="external text" href="https://d-nb.info/gnd/4193909-8">4193909-8</a></span></li> <li>SUDOC: <span class="uid"><a rel="nofollow" class="external text" href="https://www.idref.fr/029859778">029859778</a></span></li> <li><a href="/wiki/A_Cseh_K%C3%B6zt%C3%A1rsas%C3%A1g_Nemzeti_K%C3%B6nyvt%C3%A1ra" title="A Cseh Köztársaság Nemzeti Könyvtára">NKCS</a>: <span class="uid"><a rel="nofollow" class="external text" href="https://aleph.nkp.cz/F/?func=find-c&amp;local_base=aut&amp;ccl_term=ica=ph116956&amp;CON_LNG=ENG">ph116956</a></span></li> <li><a href="/wiki/Francia_Nemzeti_K%C3%B6nyvt%C3%A1r" title="Francia Nemzeti Könyvtár">BNF</a>: <span class="uid"><a rel="nofollow" class="external text" href="https://catalogue.bnf.fr/ark:/12148/cb12139768z">cb12139768z</a></span></li> <li><a href="/wiki/Spanyol_Nemzeti_K%C3%B6nyvt%C3%A1r" title="Spanyol Nemzeti Könyvtár">BNE</a>: <span class="uid"><a rel="nofollow" class="external text" href="http://catalogo.bne.es/uhtbin/authoritybrowse.cgi?action=display&amp;authority_id=XX540250">XX540250</a></span></li></ul> </div></td></tr></tbody></table></div> <div class="noprint noviewer" style="overflow: hidden; clear: both;"><div style="margin-left:0; margin-right:2px;"><ul style="display:block; list-style-image:none; list-style-type:none; width:100%; vertical-align:middle; margin:0; padding:0; min-height: 27px;"><li style="float:left; min-height: 27px; line-height:25px; width:100%; margin:0; margin-top:.5em; margin-left:0; margin-right:0; padding:0; border:1px solid #CCF; background-color:#F0EEFF"><span typeof="mw:File"><a href="/wiki/F%C3%A1jl:P_computing.svg" class="mw-file-description" title="Informatika"><img alt="Informatika" src="//upload.wikimedia.org/wikipedia/commons/thumb/d/d6/P_computing.svg/25px-P_computing.svg.png" decoding="async" width="25" height="23" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/d/d6/P_computing.svg/38px-P_computing.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/d/d6/P_computing.svg/50px-P_computing.svg.png 2x" data-file-width="400" data-file-height="360" /></a></span> <b><a href="/wiki/Port%C3%A1l:Informatika" title="Portál:Informatika">Informatikai portál</a></b> • összefoglaló, színes tartalomajánló lap</li></ul></div></div></div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?useformat=desktop&amp;type=1x1&amp;usesul3=0" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">A lap eredeti címe: „<a dir="ltr" href="https://hu.wikipedia.org/w/index.php?title=C%2B%2B&amp;oldid=27055180">https://hu.wikipedia.org/w/index.php?title=C%2B%2B&amp;oldid=27055180</a>”</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Wikip%C3%A9dia:Kateg%C3%B3ri%C3%A1k" title="Wikipédia:Kategóriák">Kategória</a>: <ul><li><a href="/wiki/Kateg%C3%B3ria:C%2B%2B" title="Kategória:C++">C++</a></li><li><a href="/wiki/Kateg%C3%B3ria:Imperat%C3%ADv_programoz%C3%A1si_nyelvek" title="Kategória:Imperatív programozási nyelvek">Imperatív programozási nyelvek</a></li></ul></div><div id="mw-hidden-catlinks" class="mw-hidden-catlinks mw-hidden-cats-hidden">Rejtett kategóriák: <ul><li><a href="/wiki/Kateg%C3%B3ria:Wikip%C3%A9dia-sz%C3%B3cikkek_LCCN-azonos%C3%ADt%C3%B3val" title="Kategória:Wikipédia-szócikkek LCCN-azonosítóval">Wikipédia-szócikkek LCCN-azonosítóval</a></li><li><a href="/wiki/Kateg%C3%B3ria:Wikip%C3%A9dia-sz%C3%B3cikkek_GND-azonos%C3%ADt%C3%B3val" title="Kategória:Wikipédia-szócikkek GND-azonosítóval">Wikipédia-szócikkek GND-azonosítóval</a></li><li><a href="/wiki/Kateg%C3%B3ria:Wikip%C3%A9dia-sz%C3%B3cikkek_BNF-azonos%C3%ADt%C3%B3val" title="Kategória:Wikipédia-szócikkek BNF-azonosítóval">Wikipédia-szócikkek BNF-azonosítóval</a></li></ul></div></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> A lap utolsó módosítása: 2024. április 12., 16:18</li> <li id="footer-info-copyright">A lap szövege <a rel="nofollow" class="external text" href="http://creativecommons.org/licenses/by-sa/4.0/deed.hu">Creative Commons Nevezd meg! – Így add tovább! 4.0</a> licenc alatt van; egyes esetekben más módon is felhasználható. Részletekért lásd a <a href="/wiki/Wikip%C3%A9dia:Felhaszn%C3%A1l%C3%A1si_felt%C3%A9telek" title="Wikipédia:Felhasználási feltételek">felhasználási feltételeket</a>.</li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Adatvédelmi irányelvek</a></li> <li id="footer-places-about"><a href="/wiki/Wikip%C3%A9dia:R%C3%B3lunk">A Wikipédiáról</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Wikip%C3%A9dia:Jogi_nyilatkozat">Jogi nyilatkozat</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">Magatartási kódex</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Fejlesztők</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/hu.wikipedia.org">Statisztikák</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Sütinyilatkozat</a></li> <li id="footer-places-mobileview"><a href="//hu.m.wikipedia.org/w/index.php?title=C%2B%2B&amp;mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Mobil nézet</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><picture><source media="(min-width: 500px)" srcset="/static/images/footer/wikimedia-button.svg" width="84" height="29"><img src="/static/images/footer/wikimedia.svg" width="25" height="25" alt="Wikimedia Foundation" lang="en" loading="lazy"></picture></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><picture><source media="(min-width: 500px)" srcset="/w/resources/assets/poweredby_mediawiki.svg" width="88" height="31"><img src="/w/resources/assets/mediawiki_compact.svg" alt="Powered by MediaWiki" lang="en" width="25" height="25" loading="lazy"></picture></a></li> </ul> </footer> </div> </div> </div> <div class="vector-header-container vector-sticky-header-container"> <div id="vector-sticky-header" class="vector-sticky-header"> <div class="vector-sticky-header-start"> <div class="vector-sticky-header-icon-start vector-button-flush-left vector-button-flush-right" aria-hidden="true"> <button class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-sticky-header-search-toggle" tabindex="-1" data-event-name="ui.vector-sticky-search-form.icon"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Keresés</span> </button> </div> <div role="search" class="vector-search-box-vue vector-search-box-show-thumbnail vector-search-box"> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail"> <form action="/w/index.php" id="vector-sticky-search-form" class="cdx-search-input cdx-search-input--has-end-button"> <div class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Keresés a Wikipédián"> <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Speciális:Keresés"> </div> <button class="cdx-button cdx-search-input__end-button">Keresés</button> </form> </div> </div> </div> <div class="vector-sticky-header-context-bar"> <nav aria-label="Tartalomjegyzék" class="vector-toc-landmark"> <div id="vector-sticky-header-toc" class="vector-dropdown mw-portlet mw-portlet-sticky-header-toc vector-sticky-header-toc vector-button-flush-left" > <input type="checkbox" id="vector-sticky-header-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-sticky-header-toc" class="vector-dropdown-checkbox " aria-label="Tartalomjegyzék kinyitása/becsukása" > <label id="vector-sticky-header-toc-label" for="vector-sticky-header-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">Tartalomjegyzék kinyitása/becsukása</span> </label> <div class="vector-dropdown-content"> <div id="vector-sticky-header-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div class="vector-sticky-header-context-bar-primary" aria-hidden="true" ><span class="mw-page-title-main">C++</span></div> </div> </div> <div class="vector-sticky-header-end" aria-hidden="true"> <div class="vector-sticky-header-icons"> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-talk-sticky-header" tabindex="-1" data-event-name="talk-sticky-header"><span class="vector-icon mw-ui-icon-speechBubbles mw-ui-icon-wikimedia-speechBubbles"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-subject-sticky-header" tabindex="-1" data-event-name="subject-sticky-header"><span class="vector-icon mw-ui-icon-article mw-ui-icon-wikimedia-article"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-history-sticky-header" tabindex="-1" data-event-name="history-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-history mw-ui-icon-wikimedia-wikimedia-history"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only mw-watchlink" id="ca-watchstar-sticky-header" tabindex="-1" data-event-name="watch-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-star mw-ui-icon-wikimedia-wikimedia-star"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-edit-sticky-header" tabindex="-1" data-event-name="wikitext-edit-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-wikiText mw-ui-icon-wikimedia-wikimedia-wikiText"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-ve-edit-sticky-header" tabindex="-1" data-event-name="ve-edit-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-edit mw-ui-icon-wikimedia-wikimedia-edit"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-viewsource-sticky-header" tabindex="-1" data-event-name="ve-edit-protected-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-editLock mw-ui-icon-wikimedia-wikimedia-editLock"></span> <span></span> </a> </div> <div class="vector-sticky-header-buttons"> <button class="cdx-button cdx-button--weight-quiet mw-interlanguage-selector" id="p-lang-btn-sticky-header" tabindex="-1" data-event-name="ui.dropdown-p-lang-btn-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-language mw-ui-icon-wikimedia-wikimedia-language"></span> <span>110 nyelv</span> </button> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive" id="ca-addsection-sticky-header" tabindex="-1" data-event-name="addsection-sticky-header"><span class="vector-icon mw-ui-icon-speechBubbleAdd-progressive mw-ui-icon-wikimedia-speechBubbleAdd-progressive"></span> <span>Új téma nyitása</span> </a> </div> <div class="vector-sticky-header-icon-end"> <div class="vector-user-links"> </div> </div> </div> </div> </div> <div class="mw-portlet mw-portlet-dock-bottom emptyPortlet" id="p-dock-bottom"> <ul> </ul> </div> <script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgHostname":"mw-web.codfw.main-7f5d45d576-t8mn6","wgBackendResponseTime":273,"wgPageParseReport":{"limitreport":{"cputime":"0.398","walltime":"0.586","ppvisitednodes":{"value":2520,"limit":1000000},"postexpandincludesize":{"value":30305,"limit":2097152},"templateargumentsize":{"value":10056,"limit":2097152},"expansiondepth":{"value":10,"limit":100},"expensivefunctioncount":{"value":74,"limit":500},"unstrip-depth":{"value":0,"limit":20},"unstrip-size":{"value":117002,"limit":5000000},"entityaccesscount":{"value":1,"limit":400},"timingprofile":["100.00% 398.571 1 -total"," 29.43% 117.286 1 Sablon:Programozási_nyelv_infobox"," 19.27% 76.789 1 Sablon:Főbb_programozási_nyelvek"," 18.43% 73.454 1 Sablon:Navbox"," 13.05% 52.029 1 Sablon:Infobox/Kép"," 8.58% 34.182 14 Sablon:Infobox/Általános"," 7.57% 30.161 4 Sablon:Cite_web"," 4.99% 19.883 1 Sablon:Nemzetközi_katalógusok"," 4.64% 18.508 2 Sablon:Import_style"," 3.73% 14.871 10 Sablon:Wikidata"]},"scribunto":{"limitreport-timeusage":{"value":"0.126","limit":"10.000"},"limitreport-memusage":{"value":2529242,"limit":52428800}},"cachereport":{"origin":"mw-web.codfw.main-64b5bb4b79-xrs9v","timestamp":"20250301183342","ttl":2592000,"transientcontent":false}}});});</script> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Article","name":"C++","url":"https:\/\/hu.wikipedia.org\/wiki\/C%2B%2B","sameAs":"http:\/\/www.wikidata.org\/entity\/Q2407","mainEntity":"http:\/\/www.wikidata.org\/entity\/Q2407","author":{"@type":"Organization","name":"Contributors to Wikimedia projects"},"publisher":{"@type":"Organization","name":"Wikimedia Foundation, Inc.","logo":{"@type":"ImageObject","url":"https:\/\/www.wikimedia.org\/static\/images\/wmf-hor-googpub.png"}},"datePublished":"2007-05-11T16:12:56Z","image":"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/1\/18\/ISO_C%2B%2B_Logo.svg","headline":"\u00e1ltal\u00e1nos c\u00e9l\u00fa, magas szint\u0171 programoz\u00e1si nyelv"}</script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10