{"id":2777,"date":"2023-04-30T14:15:49","date_gmt":"2023-04-30T14:15:49","guid":{"rendered":"https:\/\/www.yazilimperver.com\/?p=2777"},"modified":"2023-04-30T14:15:49","modified_gmt":"2023-04-30T14:15:49","slug":"haftalik-c-57-uc-bes-kurali-nesne-olusturma","status":"publish","type":"post","link":"https:\/\/www.yazilimperver.com\/index.php\/2023\/04\/30\/haftalik-c-57-uc-bes-kurali-nesne-olusturma\/","title":{"rendered":"Haftal\u0131k C++ 57 &#8211; \u00dc\u00e7\/Be\u015f Kural\u0131, Nesne Olu\u015fturma"},"content":{"rendered":"<p>Merhaba sevgili yaz\u0131l\u0131mperver dostlar\u0131m. Bug\u00fcn C++ geli\u015ftiricilerin vak\u0131f oldu\u011fu &#8220;rule of three&#8221; ve C++ 11 ile birlikte art\u0131k &#8220;rule of five&#8221; mevzusuna bak\u0131yor olaca\u011f\u0131z. Bunu yaparken de, C++ constructor, copy constructor, assignment operator gibi temel kavramlara da e\u011filiyor olaca\u011f\u0131z. Kurallara ge\u00e7meden \u00f6nce, bu temel kavramlar\u0131 ve nas\u0131l kullan\u0131ld\u0131klar\u0131n\u0131 hat\u0131rlayal\u0131m isterseniz.<\/p>\n<h2><span style=\"color: #0000ff;\"><strong>Temel S\u0131n\u0131f Olu\u015fturma\/Atama Operasyonlar\u0131<\/strong><\/span><\/h2>\n<p>Yap\u0131c\u0131lar asl\u0131nda, s\u0131n\u0131f ile ayn\u0131 ismi tan\u0131yan (derleyici di\u011fer fonksiyonlardan bu sayede onlar\u0131 ay\u0131r\u0131r), d\u00f6n\u00fc\u015f de\u011feri olmayan \u00f6zel \u00fcye fonksiyonlard\u0131r ve s\u0131n\u0131f i\u00e7erisindeki verileri ge\u00e7erli de\u011ferler ile doldurmak (ya da benzeri) amac\u0131 ile kullan\u0131l\u0131rlar. \u00dc\u00e7 tip yap\u0131c\u0131 bulunur. Bunlar: Varsay\u0131lan, parametrik ve kopya yap\u0131c\u0131lard\u0131r. Varsay\u0131lan yap\u0131c\u0131, herhangi bir parametre almayan ve e\u011fer programc\u0131 tan\u0131mlamaz ise derleyici taraf\u0131ndan otomatik olarak \u00fcretilen bir yap\u0131c\u0131d\u0131r. Temel de\u011ferler 0\/false ile doldurulur.<\/p>\n<p>Parametrik yap\u0131c\u0131lar ise varsay\u0131lanlardan farkl\u0131 olarak \u00e7e\u015fitli girdiler alabilmektedir. Bunlar da ilgili s\u0131n\u0131f\u0131n olu\u015fturulmas\u0131nda ve verilerin ilklendirilmesinde kullan\u0131l\u0131rlar.<\/p>\n<p>Son olarak, kopya yap\u0131c\u0131 ise isminden de anla\u015f\u0131laca\u011f\u0131 gibi, daha \u00f6nce ayn\u0131 tipte olu\u015fturulmu\u015f bir nesne ile yeni nesnenin ilklendirilmesi i\u00e7in kullan\u0131lan yap\u0131c\u0131d\u0131r. Bu yap\u0131c\u0131 i\u00e7in nesneye referans tipinde arg\u00fcman ge\u00e7irilir.<\/p>\n<p>A\u015fa\u011f\u0131da b\u00fct\u00fcn bunlar\u0131 g\u00f6steren basit bir \u00f6rnek bulabilirsiniz:<\/p>\n<pre class=\"lang:c++ decode:true\">#include &lt;iostream&gt;\r\n\r\nusing namespace std;\r\nclass Sinif {\r\n  public:\r\n      \/\/ Varsayilan yapici\r\n      Sinif(){\r\n          cout &lt;&lt; \"Varsayilan yapici\\n\";\r\n      }\r\n      \r\n      \/\/ Parametre alan yapici\r\n      Sinif(int deneme){\r\n          cout &lt;&lt; \"Parametrik yapici\\n\";\r\n      }\r\n      \r\n      \/\/ Kopya yapici\r\n      Sinif(const Sinif&amp; Parametre){\r\n          cout &lt;&lt; \"Kopya yapici\\n\";\r\n      }\r\n};\r\n\r\n\/\/ Bu durumda da kopya yapici cagrilir\r\nvoid kopyaAlanFonks(Sinif girdi){\r\n}\r\n\/\/ Bu durumda da kopya yapici cagrilir\r\nSinif returnKopyaFonks(){\r\n    Sinif a;\r\n    return a;\r\n}\r\n\r\nint main() {\r\n    \/\/ Varsayilan yapicilar\r\n    Sinif ornek1;\r\n    Sinif* ornek2{new Sinif};\r\n    Sinif ornekArray[4];\r\n    \r\n    \/\/ Parametrik yapicilarin cagrildigi durumlar\r\n    Sinif ornek3{1};\r\n    Sinif* ornek4{new Sinif(2)};\r\n    Sinif ornek5Array[4]={Sinif(1), Sinif(2), Sinif(3), Sinif(4)};\r\n    \r\n    \/\/ explicit koymadigimiz icin dolayli yoldan parametrik yapici calisir\r\n    kopyaAlanFonks(3);\r\n    \r\n    \/\/ Kopya yapicilar\r\n    Sinif ornek6 = ornek1;\r\n    Sinif ornek7(ornek1);\r\n    Sinif ornek8{ornek1};\r\n    Sinif* ornek9{new Sinif(ornek1)};\r\n    kopyaAlanFonks(ornek1);\r\n    \r\n    \/\/ Asagidaki ornek varsayilan olarak kopya yapiciyi cagirmiyor\r\n    \/\/ -fno-elide-constructors ile bunu aktiflestirebilirsiniz. Detaylar icin https:\/\/www.wikiwand.com\/en\/Return_value_optimization\r\n    Sinif ornek10 = returnKopyaFonks();\r\n\r\n    return 0;\r\n}<\/pre>\n<p>Bu \u00f6rnekte g\u00f6rd\u00fc\u011f\u00fcn\u00fcz \u00fczere bir s\u0131n\u0131f i\u00e7in birden fazla yap\u0131c\u0131 tan\u0131mlayabilirsiniz. Yap\u0131lacar mevzusunu kapatmadan, onlar ile ilgili bir ka\u00e7 hususa daha de\u011finelim:<\/p>\n<ul>\n<li>Yap\u0131c\u0131lar\u0131 tan\u0131mlamazsan\u0131z, derleyiciler varsay\u0131lan bir taneyi sizin i\u00e7in tan\u0131mlar (tabi \u00f6zellikle tan\u0131mlamamas\u0131n\u0131 demezseniz),<\/li>\n<li>Yap\u0131c\u0131lar statik ya da virtual \u00f6n eki almaz,<\/li>\n<li>Yap\u0131c\u0131lar i\u00e7in olabildi\u011fince ilklendirme i\u015flemleri yap\u0131p, &#8220;exception&#8221; \u00fcretebilecek durumlardan ka\u00e7\u0131nmal\u0131s\u0131n\u0131z.<\/li>\n<\/ul>\n<p>\u015eimdi kurallara bakabiliriz.<\/p>\n<h2><span style=\"color: #0000ff;\"><strong>\u00dc\u00e7 Kural\u0131<\/strong><\/span><\/h2>\n<p>\u00dc\u00e7 kural\u0131 asl\u0131nda C++ 11 \u00f6ncesi kullan\u0131m i\u00e7in ge\u00e7erli, sonras\u0131 i\u00e7in be\u015f kural\u0131na da bak\u0131yor olaca\u011f\u0131z. \u00dc\u00e7 kural temelde \u015funu der:<\/p>\n<blockquote><p>E\u011fer bir C++ s\u0131n\u0131f\u0131, y\u0131k\u0131c\u0131 (&#8220;destructor&#8221;) ya da kopya yap\u0131c\u0131 da kopyalama operat\u00f6r\u00fcnden\u00a0 (operator =()) birini tan\u0131mlarsa, di\u011ferlerini de tan\u0131mlamal\u0131d\u0131r.<\/p><\/blockquote>\n<p>Yap\u0131c\u0131lara bakt\u0131k, y\u0131k\u0131c\u0131 da temelde ilgili s\u0131n\u0131f kapsam d\u0131\u015f\u0131na \u00e7\u0131kt\u0131\u011f\u0131nda ya da \u00f6zellikle silindi\u011finde \u00e7a\u011fr\u0131lan yine \u00f6zel bir fonksiyondur. Atama operat\u00f6r\u00fc ise, zaten olu\u015fturulmu\u015f bir nesnenin i\u00e7eri\u011finin di\u011ferine kopyalanmas\u0131 amac\u0131 ile kullan\u0131l\u0131r.<\/p>\n<p>Bunun arkas\u0131nda yatan temel motivasyon da, e\u011fer programc\u0131 bunlardan birini tan\u0131mlama ihtiyac\u0131 duymu\u015fsa, muhtemelen (\u00f6zel durumlar hari\u00e7) otomatik olarak tan\u0131mlanacak di\u011fer yap\u0131c\u0131lar ve y\u0131k\u0131c\u0131 ihtiyac\u0131n\u0131 kar\u015f\u0131lamayacakt\u0131r. \u00c7\u00fcnk\u00fc, derleyici taraf\u0131ndan tan\u0131mlanan yap\u0131c\u0131lar ve kopyalama operat\u00f6r\u00fc, basit\u00e7e verileri kopyalar (&#8220;shallow copy&#8221;), i\u015faret\u00e7ilerin veya benzeri yap\u0131lar\u0131n ihtiya\u00e7 duyaca\u011f\u0131 kopyalama i\u015flemlerini yapmaz.<\/p>\n<p>\u015eimdi bunun s\u0131k\u0131nt\u0131 yaratt\u0131\u011f\u0131 bir duruma g\u00f6z atal\u0131m:<\/p>\n<pre class=\"lang:c++ decode:true\">#include &lt;iostream&gt;\r\n\r\nusing namespace std;\r\n\r\nclass Sinif {\r\nprivate:\r\n    int  mSize;\r\n    int* mVals; \r\n  \r\npublic:\r\n    \/\/ Yikici tanimli\r\n    ~Sinif();\r\n    \r\n    \/\/ Parametrik yapici da\r\n    Sinif( int s, int* v );\r\n    \/\/ Kopya yapici ya da atama operatoru tanimli degil.\r\n};\r\n  \r\n\/\/ Yikici yonettigimiz bellegi siliyoruz\r\nSinif::~Sinif() {\r\n   cout &lt;&lt; \"yikici cagriliyor\\n\";\r\n   \r\n   delete mVals;\r\n   mVals = nullptr;\r\n}\r\n\r\n\/\/ Parametrik yapici icerisinde \"deep copy\" yapiyoruz. Bunda sikinti yok  \r\nSinif::Sinif( int s, int* v ) {\r\n    cout &lt;&lt; \"parametrik yapici cagriliyor\\n\";\r\n    mSize = s;\r\n    mVals = new int[ mSize ];\r\n    std::copy( v, v + mSize, mVals );\r\n}\r\n  \r\nint main() {\r\n   int mVals[ 4 ] = { 11, 22, 33, 44 };\r\n   \r\n   \/\/ Parametrik yapicimiz cagriliyor\r\n   Sinif a1( 4, mVals );\r\n \r\n   \/\/ Iste bu noktada, derleyici tarafindan olusturulan kopya yapici cagriliyor\r\n   \/\/ O da sadece degerleri kopyaladigi icin i\u015faretciler aslinda ayni yeri g\u00f6steriyor\r\n   Sinif a2( a1 );\r\n \r\n   \/\/ Burada da silme i\u015flemi iki kere ayn\u0131 adres icin cagriliyo\r\n   return 0;\r\n}<\/pre>\n<p>Yukar\u0131daki \u00f6rnekte, her ne kadar parametrik yap\u0131c\u0131 ile dinamik bellekler kopyalansa da, kopya yap\u0131c\u0131 tan\u0131mlanmad\u0131\u011f\u0131 i\u00e7in kopyalama i\u015flemi sadece adreslerin kopyalanmas\u0131 ile kal\u0131yor. Bu da ilgili nesneler kapsam d\u0131\u015f\u0131na \u00e7\u0131kt\u0131\u011f\u0131nda y\u0131k\u0131c\u0131n\u0131n zaten silinmi\u015f bir belle\u011fi iki kere silmeye kalkmas\u0131na yol a\u00e7\u0131yor.\u00a0 Yukar\u0131daki kodu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda a\u015fa\u011f\u0131daki gibi bir \u00e7\u0131kt\u0131 g\u00f6rmeniz normal:<\/p>\n<pre class=\"lang:default decode:true\">parametrik yapici cagriliyor\r\nyikici cagriliyor\r\nyikici cagriliyor\r\nfree(): double free detected in tcache 2<\/pre>\n<p>Benzer \u015fekilde kopya yap\u0131c\u0131n\u0131n olup, atama operat\u00f6r\u00fcn\u00fcn olmad\u0131\u011f\u0131n\u0131 d\u00fc\u015f\u00fcn\u00fcn. Bu durumda da, yine atama ile kopyalanan nesnenin de\u011ferleri basit\u00e7e kopyalanacak ve i\u015faret\u00e7iler yan\u0131 yeri g\u00f6steriyor olacaklar.<\/p>\n<p>\u015eimdi gelelim be\u015f kural\u0131na.<\/p>\n<h2><span style=\"color: #0000ff;\"><strong>Be\u015f Kural\u0131<\/strong><\/span><\/h2>\n<p>Be\u015f kural\u0131 temelde, \u00fc\u00e7 kural\u0131 ile ayn\u0131 olmas\u0131 yan\u0131nda, ta\u015f\u0131ma yakla\u015f\u0131m\u0131 ile gelen yeni ta\u015f\u0131ma yap\u0131c\u0131s\u0131 ve atama operat\u00f6r\u00fcn\u00fc de g\u00f6z \u00f6n\u00fcne al\u0131r ve kural\u0131 \u015fu \u015fekilde g\u00fcnceller:<\/p>\n<p>E\u011fer bir C++ s\u0131n\u0131f\u0131, y\u0131k\u0131c\u0131 (&#8220;destructor&#8221;) ya da kopya yap\u0131c\u0131 da kopyalama operat\u00f6r\u00fcnden\u00a0 (operator =()) ya da ta\u015f\u0131ma yap\u0131c\u0131s\u0131 ya da ta\u015f\u0131ma atama operat\u00f6r\u00fcnden birini tan\u0131mlarsa, di\u011ferlerini de tan\u0131mlamal\u0131d\u0131r.<\/p>\n<p>ta\u015f\u0131ma operat\u00f6r ya da yap\u0131c\u0131lar\u0131n\u0131n tan\u0131mlanmamas\u0131 her ne kadar hata olmasa da \u00f6zellikle bellek y\u00f6netimi gerektiren s\u0131n\u0131flarda bunlar\u0131n tan\u0131mlanmas\u0131 daha verimli bir \u00e7\u00f6z\u00fcm sa\u011flar. Bu ba\u011flamda yukar\u0131daki s\u0131n\u0131f i\u00e7in a\u015fa\u011f\u0131daki iki operat\u00f6r\u00fc tan\u0131mlamal\u0131y\u0131z:<\/p>\n<pre class=\"lang:c++ decode:true \">\/\/ Ta\u015f\u0131ma yap\u0131c\u0131s\u0131\r\nSinif::Sinif(Sinif&amp;&amp; other) {\r\n  this-&gt;mSize = other.mSize;\r\n  this-&gt;mVals = other.mVals;\r\n  other.mVals = nullptr;\r\n}\r\n\r\n\/\/ Ta\u015f\u0131ma atama operat\u00f6r\u00fc\r\nSinif&amp; Sinif::operator=(Sinif&amp;&amp; rhs) {\r\n  \/\/ kendi kendine atama kontrol\u00fc\r\n  if (this != &amp;rhs) {\r\n    this-&gt;mSize = rhs.mSize;\r\n\r\n    \/\/ Eski veriyi silelim\r\n    if (this-&gt;mVals) {\r\n      delete[] this-&gt;mVals;\r\n    }\r\n\r\n    this-&gt;mVals = rhs.mVals;\r\n    rhs.mVals = nullptr;\r\n  }\r\n\r\n  return *this;\r\n}<\/pre>\n<p>Bu arada ta\u015f\u0131ma yap\u0131c\u0131s\u0131 ve atama operat\u00f6r\u00fc ve di\u011fer ta\u015f\u0131ma semanti\u011fine ili\u015fkin detaylar i\u00e7in a\u015fa\u011f\u0131daki yaz\u0131ma g\u00f6z atabilirsiniz.<\/p>\n<p><strong><span style=\"color: #008000;\"><a style=\"color: #008000;\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2018\/03\/16\/modern-c-5-tasima-semantikleri\/\">Modern C++ (5) : Ta\u015f\u0131ma Semantikleri<\/a><\/span><\/strong><\/p>\n<p>Bir sonraki yaz\u0131mda g\u00f6r\u00fc\u015fmek dile\u011fiyle, kendinize iyi bak\u0131n.<\/p>\n<h2><span style=\"color: #0000ff;\"><strong>Kaynaklar<\/strong><\/span><\/h2>\n<ul>\n<li><span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"https:\/\/www.youtube.com\/watch?v=FXhALMsHwEY\">https:\/\/www.youtube.com\/watch?v=FXhALMsHwEY<\/a><\/strong><\/span><\/li>\n<li><span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"https:\/\/www.tutorialspoint.com\/cplusplus\/cpp_constructor_destructor.htm\">https:\/\/www.tutorialspoint.com\/cplusplus\/cpp_constructor_destructor.htm<\/a><\/strong><\/span><\/li>\n<li><span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"https:\/\/www.wikiwand.com\/en\/Rule_of_three_(C%2B%2B_programming)\">https:\/\/www.wikiwand.com\/en\/Rule_of_three_(C%2B%2B_programming)<\/a><\/strong><\/span><\/li>\n<li><a href=\"https:\/\/en.cppreference.com\/w\/cpp\/language\/rule_of_three\"><span style=\"color: #008000;\"><strong>https:\/\/en.cppreference.com\/w\/cpp\/language\/rule_of_three<\/strong><\/span><\/a><\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>Merhaba sevgili yaz\u0131l\u0131mperver dostlar\u0131m. Bug\u00fcn C++ geli\u015ftiricilerin vak\u0131f oldu\u011fu &#8220;rule of three&#8221; ve C++ 11 ile birlikte art\u0131k &#8220;rule of five&#8221; mevzusuna bak\u0131yor olaca\u011f\u0131z. Bunu yaparken de, C++ constructor, copy constructor, assignment operator gibi temel kavramlara da e\u011filiyor olaca\u011f\u0131z. Kurallara ge\u00e7meden \u00f6nce, bu temel kavramlar\u0131 ve nas\u0131l kullan\u0131ld\u0131klar\u0131n\u0131 hat\u0131rlayal\u0131m isterseniz. Temel S\u0131n\u0131f Olu\u015fturma\/Atama Operasyonlar\u0131 Yap\u0131c\u0131lar&#8230; <a class=\"more-link\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2023\/04\/30\/haftalik-c-57-uc-bes-kurali-nesne-olusturma\/\">Continue reading <span class=\"meta-nav\">&#8594;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":174,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[10,41,188],"tags":[713,1090,1094,1091,1089,1092,1093,1088],"class_list":["post-2777","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-c","category-modern-c","category-yazilim-muhendisligi","tag-constructor","tag-copy-constructor","tag-copy-operator","tag-destructor","tag-five","tag-move-constructor","tag-move-operator","tag-rule-of-three"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Haftal\u0131k C++ 57 - \u00dc\u00e7\/Be\u015f Kural\u0131, Nesne Olu\u015fturma - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2023\/04\/30\/haftalik-c-57-uc-bes-kurali-nesne-olusturma\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Haftal\u0131k C++ 57 - \u00dc\u00e7\/Be\u015f Kural\u0131, Nesne Olu\u015fturma - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\" \/>\n<meta property=\"og:description\" content=\"Merhaba sevgili yaz\u0131l\u0131mperver dostlar\u0131m. Bug\u00fcn C++ geli\u015ftiricilerin vak\u0131f oldu\u011fu &#8220;rule of three&#8221; ve C++ 11 ile birlikte art\u0131k &#8220;rule of five&#8221; mevzusuna bak\u0131yor olaca\u011f\u0131z. Bunu yaparken de, C++ constructor, copy constructor, assignment operator gibi temel kavramlara da e\u011filiyor olaca\u011f\u0131z. Kurallara ge\u00e7meden \u00f6nce, bu temel kavramlar\u0131 ve nas\u0131l kullan\u0131ld\u0131klar\u0131n\u0131 hat\u0131rlayal\u0131m isterseniz. Temel S\u0131n\u0131f Olu\u015fturma\/Atama Operasyonlar\u0131 Yap\u0131c\u0131lar... Continue reading &#8594;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.yazilimperver.com\/index.php\/2023\/04\/30\/haftalik-c-57-uc-bes-kurali-nesne-olusturma\/\" \/>\n<meta property=\"og:site_name\" content=\"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2023-04-30T14:15:49+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2017\/12\/FeaturedImage-e1580417052514.png\" \/>\n\t<meta property=\"og:image:width\" content=\"32\" \/>\n\t<meta property=\"og:image:height\" content=\"32\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"yaz\u0131l\u0131mperver\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"yaz\u0131l\u0131mperver\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2023\/04\/30\/haftalik-c-57-uc-bes-kurali-nesne-olusturma\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2023\/04\/30\/haftalik-c-57-uc-bes-kurali-nesne-olusturma\/\"},\"author\":{\"name\":\"yaz\u0131l\u0131mperver\",\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"headline\":\"Haftal\u0131k C++ 57 &#8211; \u00dc\u00e7\/Be\u015f Kural\u0131, Nesne Olu\u015fturma\",\"datePublished\":\"2023-04-30T14:15:49+00:00\",\"dateModified\":\"2023-04-30T14:15:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2023\/04\/30\/haftalik-c-57-uc-bes-kurali-nesne-olusturma\/\"},\"wordCount\":909,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"keywords\":[\"constructor\",\"copy constructor\",\"copy operator\",\"destructor\",\"five\",\"move constructor\",\"move operator\",\"rule of three\"],\"articleSection\":[\"C++\",\"Modern C++\",\"Yaz\u0131l\u0131m M\u00fchendisli\u011fi\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.yazilimperver.com\/index.php\/2023\/04\/30\/haftalik-c-57-uc-bes-kurali-nesne-olusturma\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2023\/04\/30\/haftalik-c-57-uc-bes-kurali-nesne-olusturma\/\",\"url\":\"https:\/\/www.yazilimperver.com\/index.php\/2023\/04\/30\/haftalik-c-57-uc-bes-kurali-nesne-olusturma\/\",\"name\":\"Haftal\u0131k C++ 57 - \u00dc\u00e7\/Be\u015f Kural\u0131, Nesne Olu\u015fturma - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#website\"},\"datePublished\":\"2023-04-30T14:15:49+00:00\",\"dateModified\":\"2023-04-30T14:15:49+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2023\/04\/30\/haftalik-c-57-uc-bes-kurali-nesne-olusturma\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.yazilimperver.com\/index.php\/2023\/04\/30\/haftalik-c-57-uc-bes-kurali-nesne-olusturma\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2023\/04\/30\/haftalik-c-57-uc-bes-kurali-nesne-olusturma\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Ana sayfa\",\"item\":\"https:\/\/www.yazilimperver.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Haftal\u0131k C++ 57 &#8211; \u00dc\u00e7\/Be\u015f Kural\u0131, Nesne Olu\u015fturma\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.yazilimperver.com\/#website\",\"url\":\"https:\/\/www.yazilimperver.com\/\",\"name\":\"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\",\"description\":\"Payla\u015fmak g\u00fczeldir.\",\"publisher\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.yazilimperver.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\",\"name\":\"yaz\u0131l\u0131mperver\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png\",\"contentUrl\":\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png\",\"caption\":\"yaz\u0131l\u0131mperver\"},\"logo\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Haftal\u0131k C++ 57 - \u00dc\u00e7\/Be\u015f Kural\u0131, Nesne Olu\u015fturma - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.yazilimperver.com\/index.php\/2023\/04\/30\/haftalik-c-57-uc-bes-kurali-nesne-olusturma\/","og_locale":"tr_TR","og_type":"article","og_title":"Haftal\u0131k C++ 57 - \u00dc\u00e7\/Be\u015f Kural\u0131, Nesne Olu\u015fturma - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","og_description":"Merhaba sevgili yaz\u0131l\u0131mperver dostlar\u0131m. Bug\u00fcn C++ geli\u015ftiricilerin vak\u0131f oldu\u011fu &#8220;rule of three&#8221; ve C++ 11 ile birlikte art\u0131k &#8220;rule of five&#8221; mevzusuna bak\u0131yor olaca\u011f\u0131z. Bunu yaparken de, C++ constructor, copy constructor, assignment operator gibi temel kavramlara da e\u011filiyor olaca\u011f\u0131z. Kurallara ge\u00e7meden \u00f6nce, bu temel kavramlar\u0131 ve nas\u0131l kullan\u0131ld\u0131klar\u0131n\u0131 hat\u0131rlayal\u0131m isterseniz. Temel S\u0131n\u0131f Olu\u015fturma\/Atama Operasyonlar\u0131 Yap\u0131c\u0131lar... Continue reading &#8594;","og_url":"https:\/\/www.yazilimperver.com\/index.php\/2023\/04\/30\/haftalik-c-57-uc-bes-kurali-nesne-olusturma\/","og_site_name":"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","article_published_time":"2023-04-30T14:15:49+00:00","og_image":[{"width":32,"height":32,"url":"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2017\/12\/FeaturedImage-e1580417052514.png","type":"image\/png"}],"author":"yaz\u0131l\u0131mperver","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"yaz\u0131l\u0131mperver","Tahmini okuma s\u00fcresi":"6 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.yazilimperver.com\/index.php\/2023\/04\/30\/haftalik-c-57-uc-bes-kurali-nesne-olusturma\/#article","isPartOf":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2023\/04\/30\/haftalik-c-57-uc-bes-kurali-nesne-olusturma\/"},"author":{"name":"yaz\u0131l\u0131mperver","@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"headline":"Haftal\u0131k C++ 57 &#8211; \u00dc\u00e7\/Be\u015f Kural\u0131, Nesne Olu\u015fturma","datePublished":"2023-04-30T14:15:49+00:00","dateModified":"2023-04-30T14:15:49+00:00","mainEntityOfPage":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2023\/04\/30\/haftalik-c-57-uc-bes-kurali-nesne-olusturma\/"},"wordCount":909,"commentCount":0,"publisher":{"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"keywords":["constructor","copy constructor","copy operator","destructor","five","move constructor","move operator","rule of three"],"articleSection":["C++","Modern C++","Yaz\u0131l\u0131m M\u00fchendisli\u011fi"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.yazilimperver.com\/index.php\/2023\/04\/30\/haftalik-c-57-uc-bes-kurali-nesne-olusturma\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.yazilimperver.com\/index.php\/2023\/04\/30\/haftalik-c-57-uc-bes-kurali-nesne-olusturma\/","url":"https:\/\/www.yazilimperver.com\/index.php\/2023\/04\/30\/haftalik-c-57-uc-bes-kurali-nesne-olusturma\/","name":"Haftal\u0131k C++ 57 - \u00dc\u00e7\/Be\u015f Kural\u0131, Nesne Olu\u015fturma - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/www.yazilimperver.com\/#website"},"datePublished":"2023-04-30T14:15:49+00:00","dateModified":"2023-04-30T14:15:49+00:00","breadcrumb":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2023\/04\/30\/haftalik-c-57-uc-bes-kurali-nesne-olusturma\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.yazilimperver.com\/index.php\/2023\/04\/30\/haftalik-c-57-uc-bes-kurali-nesne-olusturma\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.yazilimperver.com\/index.php\/2023\/04\/30\/haftalik-c-57-uc-bes-kurali-nesne-olusturma\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Ana sayfa","item":"https:\/\/www.yazilimperver.com\/"},{"@type":"ListItem","position":2,"name":"Haftal\u0131k C++ 57 &#8211; \u00dc\u00e7\/Be\u015f Kural\u0131, Nesne Olu\u015fturma"}]},{"@type":"WebSite","@id":"https:\/\/www.yazilimperver.com\/#website","url":"https:\/\/www.yazilimperver.com\/","name":"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","description":"Payla\u015fmak g\u00fczeldir.","publisher":{"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.yazilimperver.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb","name":"yaz\u0131l\u0131mperver","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/","url":"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png","contentUrl":"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png","caption":"yaz\u0131l\u0131mperver"},"logo":{"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/2777","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/comments?post=2777"}],"version-history":[{"count":6,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/2777\/revisions"}],"predecessor-version":[{"id":2783,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/2777\/revisions\/2783"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/media\/174"}],"wp:attachment":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/media?parent=2777"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/categories?post=2777"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/tags?post=2777"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}