devxlogo

Const Member Functions

Const Member Functions

Question:
What does the ‘const’ in the following funciton prototype mean?

class A{public: void fn (int a ) const;}

Answer:
The const after a member function’s parameter list indicates that the function doesn’t change the state of its object. Such a function is also called an “observer function.” The use of const stems from the “design by contract” idiom, whereby a design premise (i.e., the function doesn’t change its object’s state) is enforced by the language. Thus, if you try to change the state of the object through this function, e.g., assign a new value to one of the members, the compiler will issue an error message.

The use of const is important for two reasons: it enables users to call such a function safely (even if they didn’t examine its definition), knowing that it doesn’t change its object’s state behind their back. Secondly, in a well-designed application, the lack of const after the parameter list indicates that the member function may change the state of its object.

A classic example of this dichotomy is the getter and setter functions: a setter is never const because it assigns a value to an object’s member. On the other hand, a getter merely returns an existing value without changing its object. Therefore, it’s declared const.

devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist