Εργαστήριο Τεχνολογίας Λογισμικού
+2 votes
211 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 | 211 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

301 questions

289 answers

288 comments

903 users