Προς το περιεχόμενο

C/C++ get {} set{}, δεν υποστηρίζει ?


Latency

Προτεινόμενες αναρτήσεις

  • Απαντ. 110
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Συχνή συμμετοχή στο θέμα

πάμε πάλι, η C++ απλά είναι υπερσύνολο της C, όταν γράφω C/C++ σημαίνει C++ Main με κομμάτια C , όπως malloc, καμιά φορά συναρτήσεις

 

απλά δεν ξέρω κάποιον τρόπο στην C++ που να μας γλυτώνει από τα άπειρα Get/Set functions, υπάρχει κάτι αντίστοιχο όπως έχει η C# τα get/set ?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

πάμε πάλι, η C++ απλά είναι υπερσύνολο της C, όταν γράφω C/C++ σημαίνει C++ Main με κομμάτια C , όπως malloc, καμιά φορά συναρτήσεις

 

απλά δεν ξέρω κάποιον τρόπο στην C++ που να μας γλυτώνει από τα άπειρα Get/Set functions, υπάρχει κάτι αντίστοιχο όπως έχει η C# τα get/set ?

 

οχι

οταν γραφεις C , γραφεις C και οταν γραφεις C++ γραφεις C++.

 

Btw, η obj-C εχει κατι τετοια "ωραια" κολπα που σου παραγει τις set/get για καθε class variable

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Έχει πάψει να είναι υπερσύνολο της C η C++ εδώ και καιρό.

 

Οπότε σε C++, που υποστηρίζει OOP μπορείς σε οποιαδήποτε κλάση να ορίσεις getters και setters, κανονικά όπως σε ολες τις OOP γλώσσες.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δεν υπάρχει πιο σύντομος τρόπος για set/get στην C++.

 

Btw στην C# δε χρειάζεται καν αυτό που έγραψες αν είναι να κάνει απλό set και get.

 

Γράφεις π.χ.

>
class Mitsos
{
  public Mitsos()
  {Age = 1;}
  public int Age
  { set; get; }
}

και παράγει o compiler μόνος του τα υπόλοιπα.

 

Επίσης όπως είπαν και οι προλαλήσαντες δεν είναι απλά υπερσύνολο της C η C++ αλλά και γενικότερα στην C δεν έχεις classes οπότε στο συγκεκριμένο ερώτημα που θέτεις χώρο έχει μόνο η C++.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

α ναι? δεν το ήξερα και είχα μεγάλο πρόβλημα γιατί έπιανα τα ονόματα πάνω στις δηλώσεις και αναγκαστικά κάτω στα σετ/γετ έβαζα με μικρό ή άλλο όνομα

 

θα το κοιτάξω...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Μόνο αν έχεις απλό set,get δεν χρειάζεται να γράφεις και το private πεδίο. Με τον παραπάνω τρόπο το γράφει μόνος του ο Compiler.

 

Το feature λέγεται auto implemented properties. Δες εδώ.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

@Mouklen

Ουαου, πραγματικά δεν ήξερα ότι δεν χρειάζεται να βάλεις μέσα στα set/get κάτι, γλυτώνει πολύ δουλειά απλά με προβληματίζει

 

πως το κάνει αυτό ο Compiler.

 

βασικά αυτό που φοβάμαι είναι τι γίνεται από πίσω, γιατί λογικά δημιουργεί προσωρινές μεταβλητές για να αναθέση την τιμή, μήπως πιάνει πιο πολύ χώρο έτσι? μήπως είναι πιο αργό με το σκεπτικό ότι κάθε φορά θα

- διαβάζει το αίτημα

- δημιουργήσει μια προσωρινή μεταβλητή εκείνη την στιγμή

- θα αναθέσει την τιμή

 

ξέρεις, αυτό το πράγμα "κάθε φορά που ζητάς να δημιουργεί μεταβλητές" είναι χειρότερο από το να υπάρχουν στην μνήμη ήδη όπως γίνεται με το

 

Player p = new Player(), όπου φορτώνεται η κλάση στην μνήμη (τα πάντα, ότι περιέχει) το κακό σε αυτό είναι ότι πιάνει χώρο, το καλό είναι η ταχύτητα...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Η C δεν υποστηρίζει OOP.

 

Φυσικά και υποστηρίζει, απλά όχι με τον τρόπο που έχουμε συνηθίσει. Τα έχουμε ξαναπεί: ο πρώτος C++ compiler έκανε "compile" σε C, επομένως είναι προφανές πως μπορείς να κάνεις OOP στη C. Απλά δε θα είναι όμορφο.

 

πάμε πάλι, η C++ απλά είναι υπερσύνολο της C, όταν γράφω C/C++ σημαίνει C++ Main με κομμάτια C , όπως malloc, καμιά φορά συναρτήσεις

 

Όπως λένε τα παιδιά (migf1, moukoublen) δεν είναι καθόλου υπερσύνολο.

 

άσε την Objective-C, άμα ήθελα framework θα πήγαινα C#

 

Η Objective-C δεν είναι framework. Καλό θα ήταν να τα ξεκαθαρίσεις στο μυαλό σου.

 

Ουαου, πραγματικά δεν ήξερα ότι δεν χρειάζεται να βάλεις μέσα στα set/get κάτι, γλυτώνει πολύ δουλειά απλά με προβληματίζει πως το κάνει αυτό ο Compiler.

 

βασικά αυτό που φοβάμαι είναι τι γίνεται από πίσω, γιατί λογικά δημιουργεί προσωρινές μεταβλητές για να αναθέση την τιμή, μήπως πιάνει πιο πολύ χώρο έτσι? μήπως είναι πιο αργό με το σκεπτικό ότι κάθε φορά θα

- διαβάζει το αίτημα

- δημιουργήσει μια προσωρινή μεταβλητή εκείνη την στιγμή

- θα αναθέσει την τιμή

 

ξέρεις, αυτό το πράγμα "κάθε φορά που ζητάς να δημιουργεί μεταβλητές" είναι χειρότερο από το να υπάρχουν στην μνήμη ήδη όπως γίνεται με το

 

Player p = new Player(), όπου φορτώνεται η κλάση στην μνήμη (τα πάντα, ότι περιέχει) το κακό σε αυτό είναι ότι πιάνει χώρο, το καλό είναι η ταχύτητα...

 

Το κάνει όπως θα το έκανες και συ: δημιουργεί ένα field στην class το οποίο διαβάζεται από τον getter και γράφεται από τον setter.

 

Γενικό σχόλιο με βάση τα post σου που έχω δει τις τελευταίες μέρες: μη βιάζεσαι να βγάλεις συμπεράσματα out of thin air, δεν έχεις την απαιτούμενη εμπειρία και τα συμπεράσματα που βγαίνουν είναι τελείως λάθος και μόνο εμπόδια θα σου δημιουργήσουν. Αν έχεις αμφιβολία για κάτι γράψε κώδικα ή διάβασε το αντίστοιχο documentation για να μάθεις πώς ακριβώς λειτουργεί.

 

Το ξέρεις ας πούμε ότι μπορείς να δείς ακριβώς την class που παράγει ο compiler όταν βάλεις automatic properties?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...