Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

su c++ satiri ne anlama geliyir?


senko

Öne çıkan mesajlar

Standart C++'ta var mıydı böyle bi şey ya.
Yani yanlış anlamadıysam string de bi class (ya da direk STL'deki standart string template'ı) ve constructor overloading yapılmış. Ama C++'ta bildiğim kadarıyla bu olay yok, farklı parametrelerle çağrılabilen ve ortak işleri yapan constructorların varsa hepsinin içini elle doldurman gerek. O nedenle bu tamamen farklı bi olay da olabilir. Sanırım var bu tarz bi syntax da.
Neyse özetle olay Item classının Item(string) şeklindeki constructor'ı çağrıldığında _name için de string(string) şeklindeki contructor çağrılsın denilmiş olması. Constructor overloading olayı.

Genel mantıkla benzer bi örneği şöyle olabilir:


class Item {
public:
Item(string name): Item(name, 3, 5) {};
Item(string name, int x): Item(name, x, 5) {};
Item(string name, int x, int y): _name(name)
{
this->x = x;
this->y = y;
}
string getName() { return _name;};
private:
string _name;
int x;
int y;
};


Yine de emin değilim ya bi deneyeyim ben.
Link to comment
Sosyal ağlarda paylaş

edik: Merak edip bakınca rahat bulunuyormuş aslında. "Initialization Lists" ya da "Explicit Initialization" diye geçiyor tekniğin adı.

http://www.learncpp.com/cpp-tutorial/101-constructor-initialization-lists/

Kojiroh, default parameter'lar varken öyle bir şey yapmanın pek de gereği yok gibi geldi bana.
Link to comment
Sosyal ağlarda paylaş

Tamam öğrendim işin aslını.
C++ constructor yazılırken class üyelerine ilk atamaları scope dışında yapma imkanı tanıyomuş. Şöyle bi örnek verilebilir:


class Item
{
public:
Item(string name, int x, int y) : _name(name), x(x), y(y) { }
Item(string name, int x) : _name(name), x(x), y(5) { }
Item(string name): _name(name), x(3), y(5) { };
private:
std::string _name;
int x;
int y;
};


Kod tekrarını engellemek için başka yöntemler aranması gerekiyo yani yine.
Link to comment
Sosyal ağlarda paylaş

Mirage said:

edik: Merak edip bakınca rahat bulunuyormuş aslında. "Initialization Lists" ya da "Explicit Initialization" diye geçiyor tekniğin adı.

http://www.learncpp.com/cpp-tutorial/101-constructor-initialization-lists/

Kojiroh, default parameter'lar varken öyle bir şey yapmanın pek de gereği yok gibi geldi bana.


mirage saol senin verdigin linkte gayet guzel aciklamis, amac yaratildigi anda initilize etmek varlari sanirsam.
yani private int x yaratik sonra constructorda x = 5 dicene x(5) diyince yaratir yaratmaz 5i yapistiriyor oraya.

boyle initilize etmek daha mantikli aslinda her zaman icin constructorlarda
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...