Re: Const memebr function behaviour.
On 18 Maj, 16:15, Rusty <r_as...@yahoo.co.in> wrote:
Can somebody can explain the following behaviour. I have a small code
as below:
class B
{
public:
int b;
B () { b = 0; };
void foo2 (int h) { b = h; } // non-const function
};
class A
{
public:
int a;
A () { cout << "Inside default constructor" << endl; b = new B
();}
B* b;
void bar () const { b->foo2 (3); } // problem. how can this
compile ?
};
void foo (const A* a)
{
a->bar ();
}
int
main (int argc, char** argv)
{
A a1;
foo (&a1);
}
My concern is how could this code compile when in bar () function of
class A, I am calling non const function on pointer b ?
If instead of pointer, b is an object of type B, I get correct error
saying that inside const member function of class A, I cannot call non
const member function of B.
If you have a B member and calls on the function that instance will be
const (since the function is const). However when you have a pointer
and call the function the *pointer* becomes const and not the object
it points to.
--
Erik Wikstr=F6m