有问题需要解答解惑 求解

构造一个圆类Circle属性为半径radius圆周长和面积,实现根本输入的半径计算周长和面积并输出。要求定义以半径为参数,缺省值为零的构造函数,且周长和面积的计算在构造函数中实现

#define _USE_MATH_DEFINES
#include <iostream>
#include <cmath>
#include <stdexcept>

class Circle
{
public:
    Circle(double radius = 0.0) : _radius(radius), _circumference(2.0 * M_PI * _radius), _area(M_PI * _radius * _radius)
    {
        if (radius < 0.0)
            throw std::invalid_argument("invalid radius");
    }

    double radius() const { return _radius; }
    double circumference() const { return _circumference; }
    double area() const { return _area; }

private:
    double _radius;
    double _circumference;
    double _area;
};

int main()
{
    try
    {
        double radius;
        std::cout << "请输入半径: ";
        std::cin >> radius;
        Circle circle(radius);
        std::cout << "周长: " << circle.circumference() << '\n';
        std::cout << "面积: " << circle.area() << '\n';
    }
    catch (const std::exception &e)
    {
        std::cerr << e.what() << std::endl;
    }
    return 0;
}

#include "iostream"
#include "stdio.h"
#define Pi 3.1415926
using namespace std;
class Circle
{
public:
    float Area();
    double c_circle();

private:
    double radius;
};
double Circle::c_circle()
{
    return (2 * Pi * radius);
}

float Circle::Area()
{
    cout << "请输入半径:";
    cin >> radius;
    return Pi * radius * radius;
}

int main()
{
    Circle radius;
    float area = radius.Area();
    float c = radius.c_circle();
    cout << "面积为:" << area << endl;
    cout << "周长为:" << c << endl;
}