Microsoft KB Archive/92614

= INFO: Initializing const Member Data =

Article ID: 92614

Article Last Modified on 12/11/2003

-

APPLIES TO


 * Microsoft Visual C++ 1.0 Professional Edition
 * Microsoft Visual C++ 1.5 Professional Edition
 * Microsoft Visual C++ 1.51
 * Microsoft Visual C++ 2.0 Professional Edition
 * Microsoft Visual C++ 2.1
 * Microsoft Visual C++ 4.0 Standard Edition
 * Microsoft Visual C++ 5.0 Enterprise Edition
 * Microsoft Visual C++ 5.0 Professional Edition

-



This article was previously published under Q92614



The sample source code below demonstrates how to initialize a const member of a class. Note that the code uses a member initialization list because a const member may not appear on the left side of the assignment operator. The value must be set when the object is constructed because the value of a const member can be set only at initialization.

If an application attempts to initialize a const member with the assignment operator, the compiler generates the following error messages:

error C2758: 'a' : must be initialized in constructor base/member initializer list

error C2166: lvalue specifies const object

Using Visual C++ 32-bit Edition, version 4.0, this error is reported as:

error C2166: l-value specifies const object

The member initialization list is the preferred method to initialize the members of a class. For example, when initializing an object of a user- defined type, it is more efficient to use a member initialization list to initialize a data member than to perform an assignment in the constructor. The latter approach requires two calls: one to construct the data member and another to the operator= function to assign a value to the member.

Sample Code
/* * Compile options needed: none */


 * 1) include 

class demo {  const int a;

public: demo(int val = 0) : a(val) {} int get_a(void) { return a; } };

void main {  demo first; demo second(5);

cout << &quot;First = &quot; << first.get_a << endl;

cout << &quot;Second = &quot; << second.get_a << endl; }

Output
First = 0 Second = 5



SUMMARY
Keywords: kbinfo kblangcpp KB92614

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.