Re: const int f() and int f() const

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 3/19/06, Shriramana Sharma <samjnaa@xxxxxxxxx> wrote:
> Suppose there is a function f() which returns an integer and does not change
> any value of the class it belongs to, should I declare it as:

I don't understand what you mean here.

> const int f();

By declaring a const return type you are promising that the original
variable (inside the function's stack frame) will not be modified.
Because you're returning it by value, it's copied so the original
value could never be modified via the return value.  This qualifier
has not meaning for primitive builtin types.  This is different for
user-defined types: if a function returns a class object by value as
const, the return value of that function cannot be an lvalue (that is,
it cannot be assigned to or otherwise modified).

> or
>
> int f() const;

Marks a function as const allowing it to be called by const objects
(btw, const objects can only call const member functions).  This
construct is usually found as part of member functions declarations,
which are known to be immutable.

You probably want to choose the latter one.

	\Steve
-
: send the line "unsubscribe linux-c-programming" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Assembler]     [Git]     [Kernel List]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [C Programming]     [Yosemite Campsites]     [Yosemite News]     [GCC Help]

  Powered by Linux