INFO: Initializing const Member DataLast reviewed: September 30, 1997Article ID: Q92614 |
The information in this article applies to:
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 objectUsing Visual C++ 32-bit Edition, version 4.0, this error is reported as:
error C2166: l-value specifies const objectThe 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 */ #include <iostream.h> 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 << "First = " << first.get_a() << endl; cout << "Second = " << second.get_a() << endl; } OutputFirst = 0 Second = 5 Keywords : CPPLngIss Version : MS-DOS:7.0;WINDOWS:1.0,1.5,1.51;WINDOWS NT:1.0,2.0,2.1,4.0,5.0 Platform : MS-DOS NT WINDOWS Issue type : kbinfo |
================================================================================
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |