Latency Δημοσ. 2 Οκτωβρίου 2012 Δημοσ. 2 Οκτωβρίου 2012 υπάρχει κάτι στην C/C++ για να γλιτώσω τα πολλά get/set functions?
migf1 Δημοσ. 2 Οκτωβρίου 2012 Δημοσ. 2 Οκτωβρίου 2012 Τι εννοείς; Η C με τη C++ είναι τελείως διαφορετικές γλώσσες... η C++ υποστηρίζει OOP, η C όχι.
Latency Δημοσ. 2 Οκτωβρίου 2012 Μέλος Δημοσ. 2 Οκτωβρίου 2012 C# > class Mitsos { int age; int weight; public Mitsos() {age = weight = 1;} public int Age { get { return age;} set { age = value; } } } C ?
migf1 Δημοσ. 2 Οκτωβρίου 2012 Δημοσ. 2 Οκτωβρίου 2012 Η C δεν υποστηρίζει OOP. C# δεν ξέρω, αλλά στην C++ μπορείς να ορίσεις κανονικά getters και setters στις κλάσεις σου.
ChRis6 Δημοσ. 2 Οκτωβρίου 2012 Δημοσ. 2 Οκτωβρίου 2012 H C latency δεν εχει κλασεις ! edit: νταμν γιου μιγκ-εφ-ουαν. φιου σεκοντσ λέιτ
Latency Δημοσ. 2 Οκτωβρίου 2012 Μέλος Δημοσ. 2 Οκτωβρίου 2012 πάμε πάλι, η C++ απλά είναι υπερσύνολο της C, όταν γράφω C/C++ σημαίνει C++ Main με κομμάτια C , όπως malloc, καμιά φορά συναρτήσεις απλά δεν ξέρω κάποιον τρόπο στην C++ που να μας γλυτώνει από τα άπειρα Get/Set functions, υπάρχει κάτι αντίστοιχο όπως έχει η C# τα get/set ?
ChRis6 Δημοσ. 2 Οκτωβρίου 2012 Δημοσ. 2 Οκτωβρίου 2012 πάμε πάλι, η 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 1
Latency Δημοσ. 2 Οκτωβρίου 2012 Μέλος Δημοσ. 2 Οκτωβρίου 2012 άσε την Objective-C, άμα ήθελα framework θα πήγαινα C# xmm, κρίμα που δεν έχει...
migf1 Δημοσ. 2 Οκτωβρίου 2012 Δημοσ. 2 Οκτωβρίου 2012 Έχει πάψει να είναι υπερσύνολο της C η C++ εδώ και καιρό. Οπότε σε C++, που υποστηρίζει OOP μπορείς σε οποιαδήποτε κλάση να ορίσεις getters και setters, κανονικά όπως σε ολες τις OOP γλώσσες.
moukoublen Δημοσ. 2 Οκτωβρίου 2012 Δημοσ. 2 Οκτωβρίου 2012 Δεν υπάρχει πιο σύντομος τρόπος για 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++.
migf1 Δημοσ. 2 Οκτωβρίου 2012 Δημοσ. 2 Οκτωβρίου 2012 H C latency δεν εχει κλασεις ! edit: νταμν γιου μιγκ-εφ-ουαν. φιου σεκοντσ λέιτ :lol: 1
Latency Δημοσ. 2 Οκτωβρίου 2012 Μέλος Δημοσ. 2 Οκτωβρίου 2012 α ναι? δεν το ήξερα και είχα μεγάλο πρόβλημα γιατί έπιανα τα ονόματα πάνω στις δηλώσεις και αναγκαστικά κάτω στα σετ/γετ έβαζα με μικρό ή άλλο όνομα θα το κοιτάξω...
moukoublen Δημοσ. 2 Οκτωβρίου 2012 Δημοσ. 2 Οκτωβρίου 2012 Μόνο αν έχεις απλό set,get δεν χρειάζεται να γράφεις και το private πεδίο. Με τον παραπάνω τρόπο το γράφει μόνος του ο Compiler. Το feature λέγεται auto implemented properties. Δες εδώ.
Latency Δημοσ. 2 Οκτωβρίου 2012 Μέλος Δημοσ. 2 Οκτωβρίου 2012 @Mouklen Ουαου, πραγματικά δεν ήξερα ότι δεν χρειάζεται να βάλεις μέσα στα set/get κάτι, γλυτώνει πολύ δουλειά απλά με προβληματίζει πως το κάνει αυτό ο Compiler. βασικά αυτό που φοβάμαι είναι τι γίνεται από πίσω, γιατί λογικά δημιουργεί προσωρινές μεταβλητές για να αναθέση την τιμή, μήπως πιάνει πιο πολύ χώρο έτσι? μήπως είναι πιο αργό με το σκεπτικό ότι κάθε φορά θα - διαβάζει το αίτημα - δημιουργήσει μια προσωρινή μεταβλητή εκείνη την στιγμή - θα αναθέσει την τιμή ξέρεις, αυτό το πράγμα "κάθε φορά που ζητάς να δημιουργεί μεταβλητές" είναι χειρότερο από το να υπάρχουν στην μνήμη ήδη όπως γίνεται με το Player p = new Player(), όπου φορτώνεται η κλάση στην μνήμη (τα πάντα, ότι περιέχει) το κακό σε αυτό είναι ότι πιάνει χώρο, το καλό είναι η ταχύτητα...
defacer Δημοσ. 3 Οκτωβρίου 2012 Δημοσ. 3 Οκτωβρίου 2012 Η 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?
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα