Invalid default C ++ constructor

I am very new to C ++, so forgive me if I missed something simple. I have a Circle class:

class Circle: public Shape{ protected: //string name; Point focus; float radius; private: public: virtual void calculateArea(); virtual void calculatePerimeter(); Circle(); Circle(Point p, float r); 

};

I have two constructors, one of which is the default, which I overloaded:

 Circle::Circle() { Point p(1,1); focus = p; radius = 10; name = "Circle"; calculatePerimeter(); calculateArea(); cout<<"default circle"<<endl; } Circle::Circle(Point p, float r) { focus = p; radius = r; name = "Circle"; calculatePerimeter(); calculateArea(); } 

I mainly try to create two circles using each constructor, however, a circle created using Circle () is never created. Why can't I understand why? No error messages.

 int main{ Circle circle(a, 3.3); Circle c2(); } 
+6
source share
2 answers
  Circle c2(); 

Does not create an object, it declares a function named c2 , which takes no argument and returns a Circle object. If you want to create an object, just use:

 Circle c2; 
+21
source

This is not an instance, but a function declaration:

 // parameter-less function c2, returns a Circle. Circle c2(); 

You need

 Circle c2; 

or

 Circle c2{}; // requires c++11 
+6
source

Source: https://habr.com/ru/post/956812/


All Articles