Struct Day {
explicit Day(int d)
: val(d) {}
int val;
};
what does the colon in the 3rd line means?
Thanks
The second line is a constructor. Constructors are allowed to have initialization lists. This simply means that since val is a member of Day, it val be set to d by the initialization call. Initialization lists follow this fomat:
Struct Generic{
int a;
float b;
char c;
Generic( int x, float y, char z ) : a( x ), b( y ), c( z ){
//any other setup that needs to be done
}
};
So, the colon indicates that an intialization list follows.
This :
class Test{
int i;
public :
Test() : i(0){}
};
is very similar to this :
class Test{
int i;
public:
Test(){ i = 0; }
};
The only difference is that the first one is more efficient, and as pointed
out, its called an initializer list.
Struct Day {
explicit Day(int d)
: val(d) {}
int val;
};
what does the colon in the 3rd line means?
I compiled this on my cygwin system and I got this error:
test.c:5: error: expected specifier-qualifier-list before ‘explicit’
Here is what I tried
#include <stdio.h>
struct day
{
explicit day(int d)
: val(d){}
int val;
};
main()
{
printf("%d\n", sizeof(struct day));
return 0;
}
You're in C++ now, friend. It won't work if you compile it as C (I'm not up on language extensions and C99 at all but I still don't believe so).
We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.