c++ - can i initiate an object of a class through a statement? -


as understand can initiate object s of class sample through statement,

sample s=10;   

compiler treat statement sample s(10). if there 1 argument constructor in class sample , statement work if there no 1 argument constructor compiler flash error.

i want know. can initiate object of class sample through statement,

sample s=10,20;   

this shown in following example:

class sample {  private:         int a,b;   public:       sample(int i) {         a=i;           b=i;       }      sample(int i, int j) {         a=i;           b=j;       }      void display(){         cout<<a<<endl<<b;       }   };    void main(){         sample s = 10;           sample c = 10,20;           c.display();   }   

would above program work?

sample c = 10,20; 

this not compiled. note , here not operator declaration separator , expects sample c = 10, d = 20

sample c = (10,20); 

, operator executed , 10 , 20 evaluated respectively later result. statment equivalent sample s(20);

would above program work?

it not compile.

sample c = (10,20) compile , run not call constructor 2 arguments might expect.

can initiate object of class through statement?

yes, use sample c(10, 20)

in c++11 onwards, syntax sample c = {10, 20} possible using std::initializer_list constructor argument.

sample(std::initializer_list<int> l) : a(0), b(0) {     if(l.size() > 2u) { /* throw */ }     int = 0;     for(int x : l) {         if(i == 0) { = x; b = x; }         else if(i == 1) b = x;         ++i;     } } ... sample c = {10,20}; 

live demo here


Comments

Popular posts from this blog

c++ - Difference between pre and post decrement in recursive function argument -

php - Nothing but 'run(); ' when browsing to my local project, how do I fix this? -

php - How can I echo out this array? -