Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c++ > #67890
| Path | csiph.com!news.swapon.de!eternal-september.org!feeder.eternal-september.org!reader01.eternal-september.org!.POSTED!not-for-mail |
|---|---|
| From | Tim Rentsch <tr.17687@z991.linuxsc.com> |
| Newsgroups | comp.lang.c++ |
| Subject | Re: About getters/setters |
| Date | Thu, 22 Aug 2019 15:09:03 -0700 |
| Organization | A noiseless patient Spider |
| Lines | 66 |
| Message-ID | <86y2zk26ps.fsf@mailhub.linuxsc.com> (permalink) |
| References | <kSg7F.32840$Xs5.970@fx06.am4> |
| Mime-Version | 1.0 |
| Content-Type | text/plain; charset=us-ascii |
| Injection-Info | reader02.eternal-september.org; posting-host="3dc9dd473b90ddbbb978ff4dade5239c"; logging-data="2785"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+3hqR9mRnYXz78WcnDVp1PeHyBRlMb/bU=" |
| User-Agent | Gnus/5.11 (Gnus v5.11) Emacs/22.4 (gnu/linux) |
| Cancel-Lock | sha1:Ep/4bN8+3s3I2iOSioF3L3WtHpM= sha1:6bm7+6qxhyzOFzyDXfy7b5VeHaw= |
| Xref | csiph.com comp.lang.c++:67890 |
Show key headers only | View raw
JiiPee <no@notvalid.com> writes:
[some white space reformatting done]
> Which one is better: 1)
>
> class Person {
> public:
> int getAge() { return age;}
> void setAge(int a) { age = a;}
> private:
> int age;
> };
>
> or 2)
>
> struct Person {
> int age;
> };
>
> ####
>
> I know Herb Sutter recommended 1) but for example isocpp
>
> https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rh-get
>
> seems to recommend 2). [...]
>
> I do currently 1) but wondering which way to go.
>
> Like now I have a "Settings" class. Simple data members. I started
> adding getters and setters....
I agree with Herb Sutter's recommendation that (assuming the
class or struct has some member functions) data members should
never be public. There are cases where for data members might
plausibly be made protected rather than private, but never
public. (Incidentally I am ignoring the "age/birthday" matter
that some other people have commented on, and assuming your
question is meant as generic, with 'age' being merely an
unfortunate choice of example.)
I suggest however a slightly different pattern than (1), along
these lines (disclaimer: not compiled):
class Person {
unsigned siblings_;
// ... other data members ...
public:
// ... other member functions
unsigned &siblings() { return siblings_; }
const unsigned &siblings() const { return siblings_; }
};
Now our accessor functions look more like data member access, but
they remain functions:
if( fred.siblings() > 0 ) ...
fred.siblings() += 1; // a new birth in fred's family
To me this pattern reads nicer on the client side than set/get
functions.
Back to comp.lang.c++ | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
About getters/setters JiiPee <no@notvalid.com> - 2019-08-21 20:22 +0100
Re: About getters/setters Jorgen Grahn <grahn+nntp@snipabacken.se> - 2019-08-21 19:34 +0000
Re: About getters/setters Bo Persson <bo@bo-persson.se> - 2019-08-21 21:40 +0200
Re: About getters/setters Öö Tiib <ootiib@hot.ee> - 2019-08-21 12:52 -0700
Re: About getters/setters JiiPee <no@notvalid.com> - 2019-08-22 15:25 +0100
Re: About getters/setters Öö Tiib <ootiib@hot.ee> - 2019-08-22 09:06 -0700
Re: About getters/setters Tim Rentsch <tr.17687@z991.linuxsc.com> - 2019-08-24 04:32 -0700
Re: About getters/setters Tim Rentsch <tr.17687@z991.linuxsc.com> - 2019-08-22 15:09 -0700
Re: About getters/setters Ian Collins <ian-news@hotmail.com> - 2019-08-23 16:17 +1200
Re: About getters/setters Tim Rentsch <tr.17687@z991.linuxsc.com> - 2019-08-23 05:26 -0700
Re: About getters/setters Melzzzzz <Melzzzzz@zzzzz.com> - 2019-08-23 18:07 +0000
Re: About getters/setters JiiPee <no@notvalid.com> - 2019-08-23 07:09 +0100
Re: About getters/setters JiiPee <no@notvalid.com> - 2019-08-23 07:13 +0100
Re: About getters/setters David Brown <david.brown@hesbynett.no> - 2019-08-23 09:30 +0200
Re: About getters/setters Jorgen Grahn <grahn+nntp@snipabacken.se> - 2019-08-25 06:16 +0000
Re: About getters/setters David Brown <david.brown@hesbynett.no> - 2019-08-25 12:12 +0200
Re: About getters/setters Jorgen Grahn <grahn+nntp@snipabacken.se> - 2019-08-23 11:24 +0000
Re: About getters/setters James Kuyper <jameskuyper@alumni.caltech.edu> - 2019-08-23 08:34 -0400
Re: About getters/setters Jorgen Grahn <grahn+nntp@snipabacken.se> - 2019-08-23 14:48 +0000
Re: About getters/setters Jorgen Grahn <grahn+nntp@snipabacken.se> - 2019-08-23 15:49 +0000
csiph-web