Εργαστήριο Τεχνολογίας Λογισμικού
+2 votes
138 views

Γίνεται να καλέσω έναν constructor για να κάνει κάποια δουλεία που πρέπει να κάνει και ενας άλλος overloaded constructor?

πχ αν βαριέμαι να αρχικοποιήσω τις μεταβλητές στον 2ο constructor αφού την ίδια δουλεία κάνει ο 1ος constructor:

class stack
{
public:
  stack(int sz) : maxsize(sz),
                  cursize(0),
                  arr(new int[sz]) {}

  stack(const stack &s)
  {
    stack(s.maxsize); // initialise private fields
    ... // copy elements from s to this
  }
...
private:
   int *arr, maxsize, cursize;
};

Είναι μέρος της 3ης άσκησεις και έχει αρκετά περίεργη συμπεριφορά αυτός ο κώδικας.
Aυτό που νομίζω ότι κάνει αυτη τη στιγμή είναι να φτιάχνει ένα temporary stack isntance στην γραμμη "//initialise private fields"
Μπορεί κάποιος να μου εξηγήσει αν κάτι τέτοιο γίνεται (ίσως με άλλο τρόπο) ?

in progtech by (750 points)
edited by | 138 views

1 Answer

+1 vote
Best answer

Στην C++11 το πρόσθεσαν
πχ

class SomeType
{
    int number;

    public:
    SomeType(int new_number) : number(new_number) {}
    SomeType() : SomeType(42) {}
};

Περισσότερα μπορείς να βρείς εδώ

by (3.0k points)
edited by
+1

Thanks

300 questions

287 answers

287 comments

759 users