Re: member variable :1 syntax
* Angus:
On 7 May, 12:14, "Alf P. Steinbach" <al...@start.no> wrote:
* Angus:
This sort of idea is used a lot in the code I am looking at:
bool m_setting1 :1;
bool m_setting2 :1;
bool m_setting3 :1;
bool m_setting4 :1;
etc etc.
I presume it is for efficiency.
It's unlikely to improve efficiency, but it can be a good way to conform to some
externally imposed memory layout.
Cheers & hth.,
- Alf
This example demonstrates a memory advantage:
class myclass
{
public:
bool getboolval() { return m_setting1; }
private:
bool m_setting1:1;
bool m_setting2:1;
bool m_setting3:1;
bool m_setting4:1;
bool m_setting5:1;
bool m_setting6:1;
bool m_setting7:1;
bool m_setting8:1;
};
int main(){
int size = sizeof(myclass);
std::cout << size; //reports 1
If however, the :1 syntax above is removed, then size is reported as
8.
My test was using MSVC++v6 on Windows XP (32 bit).
<digression>
You really should upgrade compiler. You'd get the same result, but MSVC 6 is a
pre-standard compiler and has trouble with modern template code, forces you to
write non-standard code, plus it has a host of bugs in floating point support.
AFAIK the latest MSVC compiler is bundled with the SDK, so it's free even
without installing the lobotimized free version of Visual Studio.
</digression>
Yes, it's a memory advantage, but have you tested efficiency? :-)
Cheers, & hth.,
- Alf
--
Due to hosting requirements I need visits to <url: http://alfps.izfree.com/>.
No ads, and there is some C++ stuff! :-) Just going there is good. Linking
to it is even better! Thanks in advance!