 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
raghavendra Guest
|
Posted: Tue Mar 02, 2004 12:56 pm Post subject: regarding static fn |
|
|
Hi ,
A static member can be accessed only by another static method....but the
vice-versa is not true....Can anyone pls explain me the logic behind this...
Also in a project, if we have too many static members and methods, will it
cause a problem??
thanx for ur comments
regards,
Raghavendra Mahuli
|
|
| Back to top |
|
 |
raghavendra Guest
|
Posted: Tue Mar 02, 2004 1:01 pm Post subject: Re: regarding static fn |
|
|
What i mean by vice versa....
A static method can access non static members
"raghavendra" <raghavendra.ma (AT) in (DOT) bosch.com> wrote
| Quote: | Hi ,
A static member can be accessed only by another static method....but the
vice-versa is not true....Can anyone pls explain me the logic behind
this...
Also in a project, if we have too many static members and methods, will
it
cause a problem??
thanx for ur comments
regards,
Raghavendra Mahuli
|
|
|
| Back to top |
|
 |
Leor Zolman Guest
|
Posted: Tue Mar 02, 2004 1:33 pm Post subject: Re: regarding static fn |
|
|
On Tue, 2 Mar 2004 18:31:30 +0530, "raghavendra"
<raghavendra.ma (AT) in (DOT) bosch.com> wrote:
| Quote: | What i mean by vice versa....
A static method can access non static members
"raghavendra" <raghavendra.ma (AT) in (DOT) bosch.com> wrote in message
news:c220b1$kpk$1 (AT) ns1 (DOT) fe.internet.bosch.com...
Hi ,
A static member can be accessed only by another static method....but the
vice-versa is not true....Can anyone pls explain me the logic behind
this...
Also in a project, if we have too many static members and methods, will
it
cause a problem??
thanx for ur comments
regards,
Raghavendra Mahuli
|
A static member function cannot access non-static members using
/unqualified names/, but it can if those the names are qualified (by dot
(.), arrow (->) or : (in the same way those members would be accessed
from code in a non-member function such as main()).
The thing to remember is that unqualified names within a member function
that resolve to non-static members of the same class act as if they were
preceded by "this->", implying that each instantiated object of the class
has its own copy of the data (or that it makes sense to call a member
function that requires a "this" object to operate upon).
A static member function has no "this" object, so it wouldn't make much
sense for code within such a function to say something like
int i = length();
meaning:
int i = this->length();
if there's no implicit object to apply the length() function to. So that
isn't allowed.
On the other side of the coin, within a /non-static/ member function, all
uses of unqualified static member names refer, by definition, to the same
object...although it makes equally little sense to /qualify/ these names
with . or -> or :: (well, the latter could make sense to force a
non-default scope resolution), C++ allows them all just so we all have
more options for creating cryptic code
-leor
Leor Zolman
BD Software
[email]leor (AT) bdsoft (DOT) com[/email]
www.bdsoft.com -- On-Site Training in C/C++, Java, Perl & Unix
C++ users: Download BD Software's free STL Error Message
Decryptor at www.bdsoft.com/tools/stlfilt.html
|
|
| Back to top |
|
 |
raghavendra Guest
|
Posted: Thu Mar 04, 2004 5:31 am Post subject: Re: regarding static fn |
|
|
Thanx leor for the info.
I would also like to know why a static member can be accessed only by a
STATIC member function
| Quote: | What i mean by vice versa....
A static method can access non static members
On the other side of the coin, within a /non-static/ member function, all
uses of unqualified static member names refer, by definition, to the same
object...although it makes equally little sense to /qualify/ these names
with . or -> or :: (well, the latter could make sense to force a
non-default scope resolution), C++ allows them all just so we all have
more options for creating cryptic code
-leor
|
|
|
| Back to top |
|
 |
Leor Zolman Guest
|
Posted: Thu Mar 04, 2004 2:42 pm Post subject: Re: regarding static fn |
|
|
On Thu, 4 Mar 2004 11:01:01 +0530, "raghavendra"
<raghavendra.ma (AT) in (DOT) bosch.com> wrote:
| Quote: | Thanx leor for the info.
I would also like to know why a static member can be accessed only by a
STATIC member function
|
But that's not the case. The only place the word "only" applies is here: a
non-static member can **only** be accessed--via an /unqualified/
call--from within a member function (as I explained earlier).
As the paragraph I wrote (which you quote below) says. A "non-static member
function" (the OPPOSITE of a "static member function"), can access statics
just fine...and regardless of what the "this" object is during such a call,
any access to a static member named "x" will yield the exact same singular
member whether you write the expressions as
x
or
this->x
or
(*this).x
or
classname::x
At this point, I highly suggest you just start writing some code to try out
the permutations. It should then make a lot more sense (like anything in
programming.)
Good luck,
-leor
| Quote: |
What i mean by vice versa....
A static method can access non static members
On the other side of the coin, within a /non-static/ member function, all
uses of unqualified static member names refer, by definition, to the same
object...although it makes equally little sense to /qualify/ these names
with . or -> or :: (well, the latter could make sense to force a
non-default scope resolution), C++ allows them all just so we all have
more options for creating cryptic code
-leor
|
Leor Zolman
BD Software
[email]leor (AT) bdsoft (DOT) com[/email]
www.bdsoft.com -- On-Site Training in C/C++, Java, Perl & Unix
C++ users: Download BD Software's free STL Error Message
Decryptor at www.bdsoft.com/tools/stlfilt.html
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|