[c++] #ifndef #define #endif #pragma once
수업시간에 위의 차이에 대해서 배웠었는데,
잘 이해하지 못해서 다시 정리해봤다.
Circle.h 헤더파일이 존재하고
Circle.h 헤더파일을 include 한 Circle.cpp 파일이 존재하고
Circle.h 헤더파일을 include 한 Circle_Application.cpp 파일이 존재한다.
Circle.h
#ifndef CIRCLE_H //CIRCLE_H가 정의되지 않았으면, 실행 (따라서, 맨 처음 실행된 후, 그 후로는 실행 안하므로, 헤다파일의 중복 선언 방지)
#define CIRCLE_H
#include <iostream>
#include <cassert>
#include "Circle.h"
using namespace std;
class Circle {
private:
double radius;
public:
Circle(double radius);
Circle();
Circle(const Circle& circle);
~Circle();
void setRadius(double radius);
double getRadius()const;
double getArea()const;
double getPerimeter()const;
};
#endif
Circle.cpp
#include "Circle.h"
Circle::Circle(double rds)
:radius(rds)
{
if (radius < 0.0)
{
assert(false);
}
}
Circle :: Circle()
:radius (0.0)
{}
Circle::Circle(const Circle& circle)
:radius(circle.radius)
{}
Circle ::~Circle()
{}
void Circle::setRadius(double value)
{
radius = value;
if (radius < 0.0)
{
assert(false);
}
}
double Circle::getRadius()const
{
return radius;
}
double Circle::getArea()const
{
const double PI = 3.14;
return (PI * radius * radius);
}
double Circle::getPerimeter()const
{
const double PI = 3.14;
return (2 * PI * radius);
}
Circle_Application.cpp
#include "Circle.h"
int main()
{
Circle circle1(5.2);
cout << "Radius: " << circle1.getRadius() << endl;
cout << "Area: " << circle1.getArea() << endl;
cout << "Perimeter: " << circle1.getPerimeter() << endl << endl;
Circle circle2(circle1);
cout << "Radius: " << circle2.getRadius() << endl;
cout << "Area: " << circle2.getArea() << endl;
cout << "Perimeter: " << circle2.getPerimeter() << endl << endl;
Circle circle3;
cout << "Radius: " << circle3.getRadius() << endl;
cout << "Area: " << circle3.getArea() << endl;
cout << "Perimeter: " << circle3.getPerimeter() << endl << endl;
return 0;
}
'2023 1학기 > c++' 카테고리의 다른 글
[c++] virtual 함수가 필요한 이유 (0) | 2023.04.15 |
---|---|
[c++] string 함수들 (0) | 2023.04.14 |
[c++] Class Relationships : association, aggregation (0) | 2023.04.08 |
[c++]파일 입출력 c++ fstream, ofstream 사용 (0) | 2023.03.26 |
[개정 열혈 c++] p.26 문제01-2 <함수 오버로딩> (0) | 2023.03.13 |