Tuesday, March 25, 2014

Using brace initialization for any class, struct, or union VC++ 2013

In modern C++, you can use brace initialization for any type, without the equals sign.You can use brace initialization for any class, struct, or union. If a type has a default constructor, either implicitly or explicitly declared, you can use default brace initialization (with empty braces). For example, the following class may be initialized by using both default and non-default brace initialization:

#include<string>
#include<iostream>
using namespace std;

class CBraceInitializer
{
public:
CBraceInitializer(){ cout << "\nThis is Empty constructor Initializer"; }
CBraceInitializer(string StringVar) :m_mystring{ StringVar }{ cout << "\nString intilaized:" << m_mystring; }
CBraceInitializer(int IntVar, double Doublevar) :m_myint{ IntVar }, m_mydouble{ Doublevar }
{
cout << "\nInteger intilaized:" << m_myint << "\nDouble Initialized:" << m_mydouble;
}
CBraceInitializer(string StringVar, double Doublevar) :m_mystring{ StringVar }, m_mydouble{ Doublevar }
{
cout << "\nString intilaized:" << m_mystring;
cout<<"\nDouble Initialized:" << m_mydouble;
}
CBraceInitializer(string StringVar, double Doublevar, int IntVar) :m_mystring{ StringVar }, m_mydouble{ Doublevar }, m_myint{ IntVar }
{
cout << "\nString intilaized:" << m_mystring;
cout << "\nDouble Initialized:" << m_mydouble;
cout << "\nInteger intilaized:" << m_myint<<"\n";
}
int m_myint;
string m_mystring;
double m_mydouble;
};

int main()
{
CBraceInitializer objCBraceInitializer1{};
CBraceInitializer objCBraceInitializer2;

CBraceInitializer objCBraceInitializer3{"Brace String Intializer"};
CBraceInitializer objCBraceInitializer4("Function String Intializer");

CBraceInitializer objCBraceInitializer5{1,0.01};
CBraceInitializer objCBraceInitializer6(2,0.02);

CBraceInitializer objCBraceInitializer7{"Brace init with Double",0.03};
CBraceInitializer objCBraceInitializer8("Function init with Double", 0.04);

CBraceInitializer objCBraceInitializer9{ "Brace init with Double&int", 0.05,3 };
CBraceInitializer objCBraceInitializer10("Function init with Double&int", 0.06,4);

system("pause");

return 0;

}

output:

This is Empty constructor Initializer
This is Empty constructor Initializer
String intilaized:Brace String Intializer
String intilaized:Function String Intializer
Integer intilaized:1
Double Initialized:0.01
Integer intilaized:2
Double Initialized:0.02
String intilaized:Brace init with Double
Double Initialized:0.03
String intilaized:Function init with Double
Double Initialized:0.04
String intilaized:Brace init with Double&int
Double Initialized:0.05
Integer intilaized:3

String intilaized:Function init with Double&int
Double Initialized:0.06
Integer intilaized:4
Press any key to continue . . .

No comments:

Post a Comment