C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Elementary question on const

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ language (comp.lang.c++)
View previous topic :: View next topic  
Author Message
Last Timer
Guest





PostPosted: Sun Jan 30, 2005 7:31 pm    Post subject: Elementary question on const Reply with quote



I encountered the following code in Bruce Eckel's online book. Can you
please clarify what "const char* const data;" means? Thanks
//: C01:MyError.cpp {RunByHand}

class MyError {
const char* const data;
public:
MyError(const char* const msg = 0) : data(msg) {}
};

void f() {
// Here we "throw" an exception object:
throw MyError("something bad happened");
}

int main() {
// As you'll see shortly, we'll want a "try block" here:
f();
} ///:~

Back to top
Mike Wahler
Guest





PostPosted: Sun Jan 30, 2005 7:51 pm    Post subject: Re: Elementary question on const Reply with quote




"Last Timer" <dakshing64 (AT) yahoo (DOT) com> wrote

Quote:
I encountered the following code in Bruce Eckel's online book. Can you
please clarify what "const char* const data;" means?

Doesn't the book explain it?

Quote:
//: C01:MyError.cpp {RunByHand}

class MyError {
const char* const data;

This means that the data member 'data' is a const
pointer to a const type 'char' object. I.e. neither
the pointer nor what it points to may be modified.
(If you try, your compiler should complain).

-Mike



Back to top
David Harmon
Guest





PostPosted: Sun Jan 30, 2005 8:06 pm    Post subject: Re: Elementary question on const Reply with quote



On 30 Jan 2005 11:31:14 -0800 in comp.lang.c++, "Last Timer"
<dakshing64 (AT) yahoo (DOT) com> wrote,
Quote:
please clarify what "const char* const data;" means? Thanks

The first "const" means the characters pointed to cannot be changed
via this pointer. The second one means the pointer value cannot be
changed.


Back to top
Thomas Matthews
Guest





PostPosted: Sun Jan 30, 2005 8:26 pm    Post subject: Re: Elementary question on const Reply with quote

Last Timer wrote:
Quote:
I encountered the following code in Bruce Eckel's online book. Can you
please clarify what "const char* const data;" means? Thanks

Pointers have two attributes that can be constant:
the content of the pointer and the object {date} it
points to.

Many people say that reading from right to left
is easier.
const char * const data;
^ ^-- The pointer is constant.
Quote:
-- The data is constant.

When the pointer is constant, it cannot point
to other objects. When the data is constant,
the data cannot be modified by dereferencing
the pointer.

--
Thomas Matthews

C++ newsgroup welcome message:
http://www.slack.net/~shiva/welcome.txt
C++ Faq: http://www.parashift.com/c++-faq-lite
C Faq: http://www.eskimo.com/~scs/c-faq/top.html
alt.comp.lang.learn.c-c++ faq:
http://www.comeaucomputing.com/learn/faq/
Other sites:
http://www.josuttis.com -- C++ STL Library book
http://www.sgi.com/tech/stl -- Standard Template Library


Back to top
Last Timer
Guest





PostPosted: Sun Jan 30, 2005 8:30 pm    Post subject: Re: Elementary question on const Reply with quote

Thanks for your kind replies. Do you read it Left to Right or vice
versa to determine "first" and "second"?

The C++ for Dummies saz on pg 63

const char * pcc="This is a constant string";
char * const cpc="tjhis is also a string";
*pcc='a'; //illegal
*cpc ='b';//legal
pcc="another string" ; //legal
cpc="another string"; illegal

I'm trying to develop a mnemonic to remember these. Instead of rote
learning may be someone can help me figure this out logically.
Thanks again.

Back to top
Mike Wahler
Guest





PostPosted: Sun Jan 30, 2005 8:54 pm    Post subject: Re: Elementary question on const Reply with quote

"Last Timer" <dakshing64 (AT) yahoo (DOT) com> wrote

Quote:
Thanks for your kind replies. Do you read it Left to Right or vice
versa to determine "first" and "second"?

The C++ for Dummies saz on pg 63

const char * pcc="This is a constant string";
char * const cpc="tjhis is also a string";
*pcc='a'; //illegal
*cpc ='b';//legal
pcc="another string" ; //legal
cpc="another string"; illegal

I'm trying to develop a mnemonic to remember these. Instead of rote
learning may be someone can help me figure this out logically.

http://www.ericgiguere.com/articles/reading-c-declarations.html
Yes, it's about C, but applies to C++ as well. (But of course it
won't cover the 'C++-only' stuff such as class members, etc.
I don't know of a web link for that, but this one should give you
a good start.)

Also, google for a utility called 'cdecl', which can take
a C declaration and translate it to English. It's available
for most platforms, and is supplied with some.

-Mike



Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ language (comp.lang.c++) All times are GMT
Page 1 of 1

 
Jump to:  
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


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.