Şimdi Ara

C++ Sorularım var acil yardım... (2. sayfa)

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
35
Cevap
0
Favori
1.364
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: önceki 12
Sayfaya Git
Git
Giriş
Mesaj
  • Implementasyonu vakit bulursam yaparım.
    En azından Cabinet.h yi yazmaya çalıştım.

    // Cabinet.h 
    #ifndef Cabinet_h_
    #define Cabinet_h_
    #include <iostream>
    using namespace std;

    class Cabinet{
    public:
    /*Derived classlarda hacim hesabı değişecek o yüzden pure virtual*/
    virtual double a_volume() = 0;

    /*Derived classlarda print işlemi değişecek çünkü değişken eklenecek *
    *bu sebeple derived classlarda tekrar yazılmalı, pure virtual. */
    virtual void print() = 0;

    /*Renkleri tutan enum*/
    enum cabinetC{WHITE,BLUE,RED,GREEN,YELLOW,BLACK};

    /*Default değer atayan parametreli constructor*/
    Cabinet(double width_ = 2,
    double height_ = 2,
    double depth_ = 1,
    cabinetC color_ = WHITE) :
    width(width_),
    height(height_),
    depth(depth_),
    color(color_){}

    /*Soyut sınıfların destructoru virtual yazılır(çoğunlukla)*/
    virtual ~Cabinet();
    private:
    double width;
    double height;
    double depth;
    cabinetC color;
    };

    #endif




  • Teşekkürler..
  •  


    #include <iostream>
    using namespace std;

    enum Color { WHITE,BLUE,RED, GREEN,YELLOW,BLACK};

    class Cabinet{

    public:

    Cabinet(double w=2,double h=2,double d=1,Color c=WHITE);
    virtual double a_volume() const ;
    virtual void print() const=0; // saf virtual fonsksiyon
    void setHeight(double h);
    void setWeight(double w);
    void setDepth(double d);
    void setColor(Color c);
    virtual ~Cabinet();

    protected:

    Color r;
    double width,height,depth;

    };

    //sınıfın dışında yazdık
    Cabinet::Cabinet(double w,double h,double d,Color c)
    {
    width=w;
    height=h;
    depth=d;
    r=c;
    }

    double Cabinet:: a_volume() const
    {
    return width*height*depth;
    }
    void Cabinet:: setHeight(double h)
    {
    height=h;
    }

    void Cabinet::setWeight(double w){
    width=w;
    }
    void Cabinet::setDepth(double d){
    depth=d;
    }
    void Cabinet::setColor(Color c){
    r=c;
    }
    Cabinet:: ~Cabinet()
    {
    cout<<"destructor Cabinet"<<endl;
    }


    class Bookcase:public Cabinet{

    public:

    Bookcase(double b_v,int n_b ,double w=2,double h=2,double d=1,
    Color c=WHITE):Cabinet(w,h,d,c)
    {
    b_volume=b_v;
    no_books=n_b;
    }

    void a()
    {
    cout<<"hi";
    }

    void setColor(Color c)
    {
    r=c;
    }

    virtual double a_volume() const
    {
    return (width*height*depth - b_volume*no_books);
    }

    virtual void print() const
    {
    cout<<"width:"<<width<<endl;
    cout<<"height:"<<height<<endl;
    cout<<"depth:"<<depth<<endl;

    cout<<"renk:";
    switch(r) {
    case WHITE : std::cout << "white\n"; break;
    case GREEN : std::cout << "green\n"; break;
    case BLUE : std::cout << "blue\n"; break;
    case RED : std::cout << "red\n"; break;
    case YELLOW : std::cout << "yellow\n"; break;
    case BLACK : std::cout << "black\n"; break;
    }

    cout<<"b_volume:"<<b_volume<<endl;
    cout<<"no_books:"<<no_books<<endl;
    cout<<"kullanılabilir alan:"<<a_volume()<<endl;
    }

    ~Bookcase()
    {
    cout<<"destructor Bookcase"<<endl;
    }






    private:
    double b_volume;
    int no_books;


    };




    int main() {



    Cabinet *cap;
    Bookcase b(1,2,3,2,2);
    b.setColor(BLACK);
    cap=&b;
    cap->print();
    return 0;
    }



    Bugün bu kadarını yazdım.Garderobuda aynı mantıkla yazabilrisiniz diye düşünüyorum.KitchenC sınıfını da yarın yazarım inş. :)
    Hadiyin kolay gelsin :)



    < Bu mesaj bu kişi tarafından değiştirildi hannibal1903 -- 14 Ocak 2015; 0:02:06 >




  • Çok teşekkürler...
  • Anlamadığınız yer olursa sorun cevaplarım inş :)

     


    // uzun zaman olmuş cpp yazmayalı :)
    // Big tree yi iyi öğrenin.Copy constructor,assignment operator,destructor.
    // Bu üçü birbirinden ayrılmaz.Bizde burada Big tree kullandık.Çünkü dinamik
    // bir yer ayırma işlemi yaptık KitchenC sınıfında.

    #include <iostream>
    using namespace std;

    enum Color { WHITE,BLUE,RED, GREEN,YELLOW,BLACK};

    class Cabinet{

    public:

    Cabinet(double w=2,double h=2,double d=1,Color c=WHITE);
    virtual double a_volume() const ;
    virtual void print() const=0; // saf virtual fonsksiyon
    void setHeight(double h);
    void setWeight(double w);
    void setDepth(double d);
    void setColor(Color c);
    virtual ~Cabinet();

    protected:

    Color r;
    double width,height,depth;

    };

    //sınıfın dışında yazdık
    Cabinet::Cabinet(double w,double h,double d,Color c)
    {
    width=w;
    height=h;
    depth=d;
    r=c;
    }

    double Cabinet:: a_volume() const
    {
    return width*height*depth;
    }
    void Cabinet:: setHeight(double h)
    {
    height=h;
    }

    void Cabinet::setWeight(double w){
    width=w;
    }
    void Cabinet::setDepth(double d){
    depth=d;
    }
    void Cabinet::setColor(Color c){
    r=c;
    }
    Cabinet:: ~Cabinet()
    {

    }


    class Bookcase:public Cabinet{

    public:

    Bookcase(double b_v,int n_b ,double w=2,double h=2,double d=1,
    Color c=WHITE):Cabinet(w,h,d,c)
    {
    b_volume=b_v;
    no_books=n_b;

    }

    void a()
    {
    cout<<"hi";
    }

    void setColor(Color c)
    {
    r=c;
    }

    virtual double a_volume() const
    {
    return (width*height*depth - b_volume*no_books);
    }

    virtual void print() const
    {
    cout<<"width:"<<width<<endl;
    cout<<"height:"<<height<<endl;
    cout<<"depth:"<<depth<<endl;
    cout<<"renk:";
    switch(r) {
    case WHITE : std::cout << "white\n"; break;
    case GREEN : std::cout << "green\n"; break;
    case BLUE : std::cout << "blue\n"; break;
    case RED : std::cout << "red\n"; break;
    case YELLOW : std::cout << "yellow\n"; break;
    case BLACK : std::cout << "black\n"; break;
    }

    cout<<"b_volume:"<<b_volume<<endl;
    cout<<"no_books:"<<no_books<<endl;
    cout<<"kullanılabilir alan:"<<a_volume()<<endl;
    }

    ~Bookcase()
    {

    }



    private:
    double b_volume;
    int no_books;


    };


    class KitchenC:public Cabinet{

    public:

    KitchenC(double w=2,double h=2,double d=1,
    Color c=WHITE):Cabinet(w,h,d,c)
    {
    no_kitchenware=0;
    kw_volumes=new double[no_kitchenware];
    hacim=height*width*depth;
    }


    KitchenC(int n,double w=2,double h=2,double d=1,Color c=WHITE);
    KitchenC(const KitchenC& init);
    const KitchenC& operator=(const KitchenC& right);
    friend KitchenC operator+(const KitchenC& left,const KitchenC& right);

    // friendsiz hali yorum içine aldım çünkü ikiside artı operatoru olduğu için çalıştırırken
    // hata verebilirdi.test ederken bir tanesini yorum içine alın ve öyle deneyin.
    // test ettim ikiside çalışıyor.!!!!!!!!!!!!!!!
    //KitchenC operator+(const KitchenC& right)


    virtual double a_volume() const;
    virtual void print() const;
    ~KitchenC();


    private :
    int no_kitchenware;
    double *kw_volumes;
    double hacim;
    void kw_input();


    };


    KitchenC::KitchenC(int n,double w,double h,double d,
    Color c)
    :Cabinet(w,h,d,c)
    {
    no_kitchenware=n;
    kw_volumes=new double[no_kitchenware];

    for(int i=0;i<no_kitchenware;++i)
    kw_volumes[i]=0;
    hacim=height*width*depth;
    kw_input();
    }


    KitchenC::KitchenC(const KitchenC& init):no_kitchenware(init.no_kitchenware)
    {
    kw_volumes=new double[no_kitchenware];
    width=init.width;
    height=init.height;
    depth=init.depth;
    r=init.r;
    hacim=init.hacim;

    for(int i=0;i<no_kitchenware;++i)
    {
    kw_volumes[i]=init.kw_volumes[i];
    }

    }

    const KitchenC& KitchenC::operator=(const KitchenC& right)
    {
    if(&right!=this)
    {
    if(no_kitchenware!=right.no_kitchenware)
    {
    delete [] kw_volumes;
    no_kitchenware=right.no_kitchenware;
    kw_volumes=new double[no_kitchenware];
    }

    for(int i=0;i<no_kitchenware;++i)
    {
    kw_volumes[i]=right.kw_volumes[i];
    }
    width=right.width;
    height=right.height;
    depth=right.depth;
    r=right.r;
    hacim=right.hacim;
    }

    return *this;
    }

    /**
    // yorum satırına aldım
    KitchenC KitchenC::operator+(const KitchenC& right)
    {
    KitchenC temp;
    temp.no_kitchenware=no_kitchenware+right.no_kitchenware;


    temp.hacim=hacim+right.hacim;
    temp.kw_volumes=new double[temp.no_kitchenware];

    int k=0;
    for(int i=0;i<no_kitchenware;++i)
    {
    temp.kw_volumes[i]=kw_volumes[k++];
    }

    for(int i=0;i<right.no_kitchenware;++i)
    {
    temp.kw_volumes[k++]=right.kw_volumes[i];
    }


    return temp;

    }

    */

    KitchenC operator+(const KitchenC& left,const KitchenC& right)
    {
    KitchenC temp;
    temp.no_kitchenware=left.no_kitchenware+right.no_kitchenware;

    /*
    temp.depth=0;
    temp.width=0;
    temp.height=0;
    temp.r=BLACK;

    */
    temp.hacim=left.hacim+right.hacim;
    temp.kw_volumes=new double[temp.no_kitchenware];

    int k=0;
    for(int i=0;i<left.no_kitchenware;++i)
    {
    temp.kw_volumes[i]=left.kw_volumes[k++];
    }

    for(int i=0;i<right.no_kitchenware;++i)
    {
    temp.kw_volumes[k++]=right.kw_volumes[i];
    }


    return temp;

    }

    double KitchenC::a_volume() const
    {
    double sum=0;
    for(int i=0;i<no_kitchenware;++i)
    sum+=kw_volumes[i];

    return (hacim - sum);
    }


    void KitchenC:: print() const
    {
    cout<<"width:"<<width<<endl;
    cout<<"height:"<<height<<endl;
    cout<<"depth:"<<depth<<endl;
    cout<<"renk:";
    switch(r) {
    case WHITE : std::cout << "white\n"; break;
    case GREEN : std::cout << "green\n"; break;
    case BLUE : std::cout << "blue\n"; break;
    case RED : std::cout << "red\n"; break;
    case YELLOW : std::cout << "yellow\n"; break;
    case BLACK : std::cout << "black\n"; break;
    }

    cout<<"hacim:"<<hacim<<endl;
    cout<<"no_kitchenware:"<<no_kitchenware<<endl;
    cout<<"kw_volumes:";
    for(int i=0;i<no_kitchenware;++i)
    cout<<kw_volumes[i]<<" ";
    cout<<endl;

    cout<<"kullanılabilir alan:"<<a_volume()<<endl;
    }


    void KitchenC::kw_input()
    {
    cout<<"enter "<<no_kitchenware <<" kw volumes:"<<endl;
    for(int i=0;i<no_kitchenware;++i)
    {
    cin>>kw_volumes[i];
    }
    }

    KitchenC::~KitchenC()
    {
    delete [] kw_volumes;
    }



    int main() {



    Cabinet *cap,*cap1;
    KitchenC k0(3,2,3,1,RED);
    KitchenC k1(2,2,1,1);

    cap1=&k0;
    cout<<"k0:\n";
    cap1->print();
    cout<<"-------------------------\n";


    // height,width,depth,color için default değerler kulanılır.
    // çünkü iki kitchenı birleştirdiğimizde bunları tam olarak hesaplayamıyoruz
    // sadece iki dolabın toplam hacmini ve toplam eşyaları birleştiriyoruz.
    KitchenC k2;
    // + operatorunu overload ettik.
    k2=k0+k1;


    cap=&k2;
    cout<<"k2:\n";
    cap->print();
    return 0;
    }







  • quote:

    Orijinalden alıntı: hannibal1903

    Anlamadığınız yer olursa sorun cevaplarım inş :)

     


    // uzun zaman olmuş cpp yazmayalı :)
    // Big tree yi iyi öğrenin.Copy constructor,assignment operator,destructor.
    // Bu üçü birbirinden ayrılmaz.Bizde burada Big tree kullandık.Çünkü dinamik
    // bir yer ayırma işlemi yaptık KitchenC sınıfında.

    #include <iostream>
    using namespace std;

    enum Color { WHITE,BLUE,RED, GREEN,YELLOW,BLACK};

    class Cabinet{

    public:

    Cabinet(double w=2,double h=2,double d=1,Color c=WHITE);
    virtual double a_volume() const ;
    virtual void print() const=0; // saf virtual fonsksiyon
    void setHeight(double h);
    void setWeight(double w);
    void setDepth(double d);
    void setColor(Color c);
    virtual ~Cabinet();

    protected:

    Color r;
    double width,height,depth;

    };

    //sınıfın dışında yazdık
    Cabinet::Cabinet(double w,double h,double d,Color c)
    {
    width=w;
    height=h;
    depth=d;
    r=c;
    }

    double Cabinet:: a_volume() const
    {
    return width*height*depth;
    }
    void Cabinet:: setHeight(double h)
    {
    height=h;
    }

    void Cabinet::setWeight(double w){
    width=w;
    }
    void Cabinet::setDepth(double d){
    depth=d;
    }
    void Cabinet::setColor(Color c){
    r=c;
    }
    Cabinet:: ~Cabinet()
    {

    }


    class Bookcase:public Cabinet{

    public:

    Bookcase(double b_v,int n_b ,double w=2,double h=2,double d=1,
    Color c=WHITE):Cabinet(w,h,d,c)
    {
    b_volume=b_v;
    no_books=n_b;

    }

    void a()
    {
    cout<<"hi";
    }

    void setColor(Color c)
    {
    r=c;
    }

    virtual double a_volume() const
    {
    return (width*height*depth - b_volume*no_books);
    }

    virtual void print() const
    {
    cout<<"width:"<<width<<endl;
    cout<<"height:"<<height<<endl;
    cout<<"depth:"<<depth<<endl;
    cout<<"renk:";
    switch(r) {
    case WHITE : std::cout << "white\n"; break;
    case GREEN : std::cout << "green\n"; break;
    case BLUE : std::cout << "blue\n"; break;
    case RED : std::cout << "red\n"; break;
    case YELLOW : std::cout << "yellow\n"; break;
    case BLACK : std::cout << "black\n"; break;
    }

    cout<<"b_volume:"<<b_volume<<endl;
    cout<<"no_books:"<<no_books<<endl;
    cout<<"kullanılabilir alan:"<<a_volume()<<endl;
    }

    ~Bookcase()
    {

    }



    private:
    double b_volume;
    int no_books;


    };


    class KitchenC:public Cabinet{

    public:

    KitchenC(double w=2,double h=2,double d=1,
    Color c=WHITE):Cabinet(w,h,d,c)
    {
    no_kitchenware=0;
    kw_volumes=new double[no_kitchenware];
    hacim=height*width*depth;
    }


    KitchenC(int n,double w=2,double h=2,double d=1,Color c=WHITE);
    KitchenC(const KitchenC& init);
    const KitchenC& operator=(const KitchenC& right);
    friend KitchenC operator+(const KitchenC& left,const KitchenC& right);

    // friendsiz hali yorum içine aldım çünkü ikiside artı operatoru olduğu için çalıştırırken
    // hata verebilirdi.test ederken bir tanesini yorum içine alın ve öyle deneyin.
    // test ettim ikiside çalışıyor.!!!!!!!!!!!!!!!
    //KitchenC operator+(const KitchenC& right)


    virtual double a_volume() const;
    virtual void print() const;
    ~KitchenC();


    private :
    int no_kitchenware;
    double *kw_volumes;
    double hacim;
    void kw_input();


    };


    KitchenC::KitchenC(int n,double w,double h,double d,
    Color c)
    :Cabinet(w,h,d,c)
    {
    no_kitchenware=n;
    kw_volumes=new double[no_kitchenware];

    for(int i=0;i<no_kitchenware;++i)
    kw_volumes[i]=0;
    hacim=height*width*depth;
    kw_input();
    }


    KitchenC::KitchenC(const KitchenC& init):no_kitchenware(init.no_kitchenware)
    {
    kw_volumes=new double[no_kitchenware];
    width=init.width;
    height=init.height;
    depth=init.depth;
    r=init.r;
    hacim=init.hacim;

    for(int i=0;i<no_kitchenware;++i)
    {
    kw_volumes[i]=init.kw_volumes[i];
    }

    }

    const KitchenC& KitchenC::operator=(const KitchenC& right)
    {
    if(&right!=this)
    {
    if(no_kitchenware!=right.no_kitchenware)
    {
    delete [] kw_volumes;
    no_kitchenware=right.no_kitchenware;
    kw_volumes=new double[no_kitchenware];
    }

    for(int i=0;i<no_kitchenware;++i)
    {
    kw_volumes[i]=right.kw_volumes[i];
    }
    width=right.width;
    height=right.height;
    depth=right.depth;
    r=right.r;
    hacim=right.hacim;
    }

    return *this;
    }

    /**
    // yorum satırına aldım
    KitchenC KitchenC::operator+(const KitchenC& right)
    {
    KitchenC temp;
    temp.no_kitchenware=no_kitchenware+right.no_kitchenware;


    temp.hacim=hacim+right.hacim;
    temp.kw_volumes=new double[temp.no_kitchenware];

    int k=0;
    for(int i=0;i<no_kitchenware;++i)
    {
    temp.kw_volumes[i]=kw_volumes[k++];
    }

    for(int i=0;i<right.no_kitchenware;++i)
    {
    temp.kw_volumes[k++]=right.kw_volumes[i];
    }


    return temp;

    }

    */

    KitchenC operator+(const KitchenC& left,const KitchenC& right)
    {
    KitchenC temp;
    temp.no_kitchenware=left.no_kitchenware+right.no_kitchenware;

    /*
    temp.depth=0;
    temp.width=0;
    temp.height=0;
    temp.r=BLACK;

    */
    temp.hacim=left.hacim+right.hacim;
    temp.kw_volumes=new double[temp.no_kitchenware];

    int k=0;
    for(int i=0;i<left.no_kitchenware;++i)
    {
    temp.kw_volumes[i]=left.kw_volumes[k++];
    }

    for(int i=0;i<right.no_kitchenware;++i)
    {
    temp.kw_volumes[k++]=right.kw_volumes[i];
    }


    return temp;

    }

    double KitchenC::a_volume() const
    {
    double sum=0;
    for(int i=0;i<no_kitchenware;++i)
    sum+=kw_volumes[i];

    return (hacim - sum);
    }


    void KitchenC:: print() const
    {
    cout<<"width:"<<width<<endl;
    cout<<"height:"<<height<<endl;
    cout<<"depth:"<<depth<<endl;
    cout<<"renk:";
    switch(r) {
    case WHITE : std::cout << "white\n"; break;
    case GREEN : std::cout << "green\n"; break;
    case BLUE : std::cout << "blue\n"; break;
    case RED : std::cout << "red\n"; break;
    case YELLOW : std::cout << "yellow\n"; break;
    case BLACK : std::cout << "black\n"; break;
    }

    cout<<"hacim:"<<hacim<<endl;
    cout<<"no_kitchenware:"<<no_kitchenware<<endl;
    cout<<"kw_volumes:";
    for(int i=0;i<no_kitchenware;++i)
    cout<<kw_volumes[i]<<" ";
    cout<<endl;

    cout<<"kullanılabilir alan:"<<a_volume()<<endl;
    }


    void KitchenC::kw_input()
    {
    cout<<"enter "<<no_kitchenware <<" kw volumes:"<<endl;
    for(int i=0;i<no_kitchenware;++i)
    {
    cin>>kw_volumes[i];
    }
    }

    KitchenC::~KitchenC()
    {
    delete [] kw_volumes;
    }



    int main() {



    Cabinet *cap,*cap1;
    KitchenC k0(3,2,3,1,RED);
    KitchenC k1(2,2,1,1);

    cap1=&k0;
    cout<<"k0:\n";
    cap1->print();
    cout<<"-------------------------\n";


    // height,width,depth,color için default değerler kulanılır.
    // çünkü iki kitchenı birleştirdiğimizde bunları tam olarak hesaplayamıyoruz
    // sadece iki dolabın toplam hacmini ve toplam eşyaları birleştiriyoruz.
    KitchenC k2;
    // + operatorunu overload ettik.
    k2=k0+k1;


    cap=&k2;
    cout<<"k2:\n";
    cap->print();
    return 0;
    }





    Teşekkürler çok iyi
    Bir de bu temel sınıftan miras alınan şeyleri yazın dediği hangisi oluyor fonksiyonlardan mı bahsediyor?Fonksiyonlardan bahsediyorsa nasıl virtual fonksiyonu diğer class içinde normal virtual şeklinde olmadan alıyor?



    < Bu mesaj bu kişi tarafından değiştirildi AMERICOS -- 16 Ocak 2015; 14:10:36 >




  • Miras aldığı şeyler base clasın private değişkenleridir.print() ve a_volume() fonksiyonlarını override ettik.Yani yeniden tanımladık.Biz base class üzerinden bunları çağırıyoruz.Ama o run time esnasında baseden türetilen sınıfların fonksiyonlarını çalıştırıyor.Bu olaya dinamik binding diyoruz.Türkçesiye geç bağlama diyede bilinir.
    Polimorfizim ve inheritance mantığıyla çalışır bu kavram
  • quote:

    Orijinalden alıntı: hannibal1903

    Miras aldığı şeyler base clasın private değişkenleridir.print() ve a_volume() fonksiyonlarını override ettik.Yani yeniden tanımladık.Biz base class üzerinden bunları çağırıyoruz.Ama o run time esnasında baseden türetilen sınıfların fonksiyonlarını çalıştırıyor.Bu olaya dinamik binding diyoruz.Türkçesiye geç bağlama diyede bilinir.
    Polimorfizim ve inheritance mantığıyla çalışır bu kavram

    Tamamdır,teşekkürler.
    Birde aklıma takılan nokta alt sınıf üst sınıfın private üyelerine nasıl erişiyor?public olarak miras almıyor mu?



    < Bu mesaj bu kişi tarafından değiştirildi AMERICOS -- 16 Ocak 2015; 19:30:36 >
  • Protected datalara türetilmiş sınıf ulaşabilir.Private yapsaydık setter getter yoluyla ulaşabilirdik.
  • friend fonksiyonlarla hepsine erişebilrdik

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • Merhaba arkadaşlar çok güzel iş çıkarmışsınız işe yarayacağından eminim. Konuyu açan arkadaşa da, zahmet edip cevaplayan arkadaşlara da ayrı ayrı teşekkürler. Benim de bir iki sorum olacaktı cevaplarsanız sevinirim.
    KitchenC::KitchenC(int n,double w,double h,double d,
    Color c)
    :Cabinet(w,h,d,c)

    Burda :Cabinet(w,h,d,c) neden var açıklayabilir misiniz? Miras aldığını gösterdiğini sanmıyorum.
    Bir de operator overload kısmını biraz açıklayabilir misin + ve = overload' unu hiç anlamadım. Anlatabilirsen çok memnun olurum gerçekten. Son olarak

    KitchenC(const KitchenC& init); burda ne yaptığını da açıklayabilirsen çok güzel olur.

    Şimdiden teşekkürler.
  • KitchenC::KitchenC(int n,double w,double h,double d,
    Color c)
    :Cabinet(w,h,d,c) bu şekilde yaparak base sınıfın elemanlarını set ediyoruz.Yani base sınıfın constructor ını çağırıyoruz.
    + operatorunde verilen iki tane KitchenC nesnesini birleştiriyoruz.İki nesnenin hacmini ve içinedeki eşyaları birleştiryoruz.Ve tek bir KitchenC nesnesine atıyoruz.
    = opratorunde assignment owerload yapıyoruz.Assignment overload yaparken bazı özel durumlar var bunları kontol ettikten sonra setlemeleri yapıyoruz.
    Meserla KitchenC a objesine KitchenC b objesini atadığımızı varsayalım.Eğer a ve b aynı ise direk sınıfın kendisini return ediyoruz.Yani return *this;Eğer eşit değilse boyutlarını karşılaştırıyoruz ve buna göre data memberlarına atama yapıyoruz.
    KitchenC(const KitchenC& init) burdada copy constructor tanımladık.Verilen bir nesneyi sınıfın kendi nesnesine atar.Bunları daha iyi öğrenmek için biraz internette araştırma yap.Nasıl implement edileceği konusunda yardımcı birçok kaynak var.Ben bunları yazarken internetten yardım alarak yazdım.Çünkü bazı şeyleri insan unutuyor.




  • quote:

    Orijinalden alıntı: hannibal1903

    KitchenC::KitchenC(int n,double w,double h,double d,
    Color c)
    :Cabinet(w,h,d,c) bu şekilde yaparak base sınıfın elemanlarını set ediyoruz.Yani base sınıfın constructor ını çağırıyoruz.
    + operatorunde verilen iki tane KitchenC nesnesini birleştiriyoruz.İki nesnenin hacmini ve içinedeki eşyaları birleştiryoruz.Ve tek bir KitchenC nesnesine atıyoruz.
    = opratorunde assignment owerload yapıyoruz.Assignment overload yaparken bazı özel durumlar var bunları kontol ettikten sonra setlemeleri yapıyoruz.
    Meserla KitchenC a objesine KitchenC b objesini atadığımızı varsayalım.Eğer a ve b aynı ise direk sınıfın kendisini return ediyoruz.Yani return *this;Eğer eşit değilse boyutlarını karşılaştırıyoruz ve buna göre data memberlarına atama yapıyoruz.
    KitchenC(const KitchenC& init) burdada copy constructor tanımladık.Verilen bir nesneyi sınıfın kendi nesnesine atar.Bunları daha iyi öğrenmek için biraz internette araştırma yap.Nasıl implement edileceği konusunda yardımcı birçok kaynak var.Ben bunları yazarken internetten yardım alarak yazdım.Çünkü bazı şeyleri insan unutuyor.

    Sınavdan kalacak olsam bile güzel bilgiler eyv. :D




  • Evt internetten bile yardm almak icin cok gec ama hannibal sagolsun yardimci oldu gayet :) Hem belki ayni class cikar :)))

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • ACİLLL Bir kişinin yaşını hesaplamak için kullanıcıdan doğum tarihini isteyen ve girilen doğum tarihine göre, kişinin yaşını hesaplayan programı kalıtım yöntemi kullanılarak hesaplayan program konusunda yardımcı olursanız çok sevinirim.
  • 
Sayfa: önceki 12
Sayfaya Git
Git
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.