folder Tahribat.com Forumları
linefolder C - C++
linefolder Global Alanda Tanımlanmış Sınıfı Oluşturan Constructor İle Main() Arasındaki İlişki



Global Alanda Tanımlanmış Sınıfı Oluşturan Constructor İle Main() Arasındaki İlişki

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    niRvana_GG
    niRvana_GG's avatar
    Kayıt Tarihi: 01/Kasım/2012
    Erkek

    Merhaba herkese,

    Öncelikle,

    Entry Point -> Programa giriş noktası, eğer derleyicinin eklediği kodları saymaz isek normal şartlar altında bir program main() fonksiyonundan çalışmaya başlar. Bu meseleyi böyle biliyorum yanlışım varsa düzeltin.

    Soruya gelirsek

    class DenemeSinif
    {
    public:
    	int x, y;
    	DenemeSinif();
    	
    };
    
    DenemeSinif::DenemeSinif()
    {
    	cout << "DenemeSinif ctor" << endl;
    }
    
    DenemeSinif GlobalDeneme;
    
    int main(int argc, char **argv)
    {	
    	
    	cout << "main " << endl;
    
    
    	return 0;
    }



    verilen kodda ilk önce output'a"main " yazılması lazım ancak "DenemeSınıf ctor" yazılacak. Bu meselenin böyle olduğunu biliyorum ancak benim merak ettiğim derleyici ctor çağrısını tam olarak nerede gerçekleştiriyor.

    Yani main girişinin hemen peşine bütün yürütülebilir deyimlerden önce ctor çağrısının kodunumu yerleştiriyor yoksa gerçekten main e hiç girmeden mi çalışıyor. C++11 N3337 - Open Standards buraya baktım ama mesele ilgili birşey göremedim ya da gözden kaçırdım. (Yani mantıken main içerisinde GlobalDeneme yi kullanabilmek için ctor un çağrılması lazım)

     

    Teşekkürler.

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    pcdoktor636
    pcdoktor636's avatar
    Kayıt Tarihi: 12/Ocak/2010
    Erkek

    Cevaba dair bir fikrim yok, up olsun :)

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DeadSoul
    DeadSoul's avatar
    Kayıt Tarihi: 12/Mayıs/2012
    Erkek

    Global alanda tanımlanmış tüm nesnelerin yapıcıları tüm fonksiyonlardan önce çağrılır(main dahil). Yıkıcıları ise main sona erdiğinde çağrılır.

     

    DeadSoul tarafından 14/Haz/15 12:19 tarihinde düzenlenmiştir
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DrKill
    DrKill's avatar
    Kayıt Tarihi: 10/Mart/2004
    Erkek

    telefondan yazıyorum. Derleyici direktifleri işlendikten sonra mainden önceki global değişkenler oluşturulur. Daha sonra entry point olan main çalıştırılır. Sen aslında global bir değişken olan sınıfın nesnesini türetiyorsun. Kod çalıştırmıyorsun. Nesne ise constructure kısmını çalıştırıyor hepsi bu. Standartlardaki yerini bilemeyeceğim.


    Bu imzayı her gördüğünüzde 4gb kotanızın 0,00000358559191226959228515625 azalmaktadır. Bilerek ve istenerek bu imza yapılmıştır. Amaç kotanızı sömürmektir
Toplam Hit: 1825 Toplam Mesaj: 4
c++