c++ constructor question -


i still confused ctors:

question 1:
why line 15 call a:a(int) instead of a:a(double&)?

question 2:
why line 18 did not call a:a(b&)?

#include <iostream> using namespace std;  class b{};  class a{ public:    a(int )    {cout<<"a::a(int)"<<endl;}    a(double&){cout<<"a::a(double&)"<<endl;} // work if a(double), without &    a(b&){cout<<"a::a(b&)"<<endl;} };  int main() { /*line 15*/   obj((double)2.1);  // call a(int), why?    b obj2;    obj3(obj2); /*line 18*/   obj4(b);          // did not trigger output why? } 

line 15: a(double&) can take lvalues, i.e. variables can assigned to. (double)2.1 rvalue. use a(const double&) if need accept rvalues reference too.

line 18: b type, not value. a obj4(b); declares function name obj4 taking b , returning a.


Comments

Popular posts from this blog

linux - Using a Cron Job to check if my mod_wsgi / apache server is running and restart -

actionscript 3 - TweenLite does not work with object -

jQuery Ajax Render Fragments OR Whole Page -