Re: need help on coding grammar about reference / pointer /instance.
On 2006-05-27 10:06, key9 wrote:
Hi All
On coding , I think I need some basic help about how to write member
function .
I've readed the FAQ, but I am still confuse about it when coding(reference /
pointer /instance) , so I think I need some "template".
Sorry for my coding experience in c++
You should be careful when talking about templates in here since there
is something called templates in C++, but it's not what you want.
Suppose we have
class FooClass{
public:
/*
foo() // this is what I want to ask below
*/
private:
string str;
}
What I need "template" is:
1. Use a outside string (string*,string&) to replace string content in class
string* outp;
string outi;
string& outr;
how to write these three foo()?
If I understand you correctly what you are asking for is something lika
this:
// Using a pointer
FooClass::foo(string* s)
{
srt = *s;
}
// Using a reference
FooClass::foo(string& s)
{
str = s;
}
// Using a copy
FooClass::foo(string s)
{
str = s;
}
Whenever possible it is preferable to use a reference instead of a
pointer, and often instead of using a copy too.
2. 1 outside will get string content inside of class, but outside can not
change it, (return a copy/return const pointer)
2. 2 outside will get string content inside of class, but outside can change
it, (return a point/reference)
3. outside can get string which have processed in foo()
string* foo(){
string* temp;
temp = processof(str);
return temp*
}
how to use autoptr to void mem leak? if I forgot delete temp* outside?
Supposing str already has some value it can be returned like this:
// Using a pointer
string* FooClass::foo2()
{
return &str;
}
// Using a reference
string& FooClass::foo2()
{
return str;
}
// Using a copy
string FooClass::foo2()
{
return str;
}
When returning a pointer or reference the user can later change the vlue
of str without calling foo() since it can manipulate the pointer/
reference directly, thus it's often a good idea to return a copy (unless
you want this behaviour).
Notice also that you should never return a pointer or reference to a
object declared inside the function returning it since the object will
no exist after the function has returned but the pointer/reference will
still point to it.
Erik WikstrFm
--
"I have always wished for my computer to be as easy to use as my
telephone; my wish has come true because I can no longer figure
out how to use my telephone" -- Bjarne Stroustrup