Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- virtual destructor
- C++
- virtual function table
- member function pointer
- constructor
- this call
- std::vector
- delete function
- dynamic_cast
- pointer to member data
- increment operator
- diamond inheritance
- discord bot
- operator overloading
- new&delete
- virtual inheritance
- base from member
- std::endl
- return by reference
- 더 지니어스 양면포커
- std::ostream
- vector size
- placement new
- c++ basic practice
- conversion constructor
- vector capacity
- virtual function
- suffix return type
- c++ multi chatting room
- std::cout
Archives
- Today
- Total
I'm FanJae.
[C++ 기본 연습 문제] Chapter 03. 클래스의 기본 본문
1. Chapter 03. 클래스의 기본
1-1. 구조체 내에 함수정의하기
① - 2차원 평면상에서의 좌표를 표현할 수 있는 구조체를 다음과 같이 정의하였다.
- 위의 구조체를 기반으로 다음의 함수를 정의하고자 한다. (자세한 기능은 실행의 예를 통해서 확인하도록 한다).
- 단, 위의 함수들을 구조체 안에 정의를 해서 다음의 형태로 main함수를 구성될 수 있어야 한다.
struct Point
{
int xpos;
int ypos;
};
void MovePos(int x, int y); // 점의 좌표이동
void AddPoint(const Point &pos); // 점의 좌표증가
void ShowPosition(); // 현재 x, y 좌표정보 출력
#include <iostream>
struct Point
{
int xpos;
int ypos;
void MovePos(int x, int y); // 점의 좌표이동
void AddPoint(const Point& pos); // 점의 좌표증가
void ShowPosition(); // 현재 x, y 좌표정보 출력
};
int main(void)
{
Point pos1 = { 12, 4 };
Point pos2 = { 20, 30 };
pos1.MovePos(-7, 10);
pos1.ShowPosition(); //[5, 14] 출력
pos1.AddPoint(pos2);
pos1.ShowPosition(); //[25, 44] 출력
return 0;
}
void Point::MovePos(int x, int y)
{
xpos += x;
ypos += y;
}
void Point::AddPoint(const Point& pos)
{
xpos += pos.xpos;
ypos += pos.ypos;
}
void Point::ShowPosition()
{
std::cout << "[" << xpos << ", " << ypos << "]" << std::endl;
}
1-2. 클래스의 정의
① - 계산기 기능의 Calculator 클래스를 정의해보자. 기본적으로 지니는 기능은 덧셈, 뺄셈, 곱셈 그리고 나눗셈이며, 연산을 할 때마다 어떠한 연산을 몇 번 수행했는지 기록되어야 한다. 아래의 main 함수와 실행의 예에 부합하는 Calculator 클래스를 정의하면 된다.
- 단, 멤버변수는 private으로, 멤버함수는 public으로 선언하자.
int main(void)
{
Calculator cal;
cal.Init();
cout << "3.2+2.4= " << cal.Add(3.2, 2.4) << endl;
cout << "3.5/1.7=" << cal.Div(3.5, 1.7) << endl;
cout << "2.2-1.5=" << cal.Min(2.2, 1.5) << endl;
cout << "4.9/1.2=" << cal.Div(4.9, 1.2) << endl;
cal.ShowOpCount();
return 0;
}
#include <iostream>
class Calculator
{
public:
void Init()
{
for (int i = 0; i < 4; i++)
{
counter[i] = 0;
}
}
double Add(double n1, double n2)
{
counter[0]++;
return n1 + n2;
}
double Min(double n1, double n2)
{
counter[1]++;
return n1 - n2;
}
double Mul(double n1, double n2)
{
counter[2]++;
return n1 * n2;
}
double Div(double n1, double n2)
{
counter[3]++;
return n1 / n2;
}
void ShowOpCount()
{
std::cout << "덧셈 : " << counter[0] << " 뺄셈 : " << counter[1] << " 곱셈 : " << counter[2] << " 나눗셈 : " << counter[3];
}
private:
int counter[4];
};
int main(void)
{
Calculator cal;
cal.Init();
std::cout << "3.2+2.4= " << cal.Add(3.2, 2.4) << std::endl;
std::cout << "3.5/1.7=" << cal.Div(3.5, 1.7) << std::endl;
std::cout << "2.2-1.5=" << cal.Min(2.2, 1.5) << std::endl;
std::cout << "4.9/1.2=" << cal.Div(4.9, 1.2) << std::endl;
cal.ShowOpCount();
return 0;
}
② - 문자열 정보를 내부에 저장하는 printer라는 이름의 클래스를 디자인하자.
- 이 클래스의 두 가지 기능은 다음과 같다
- 1.문자열 저장
- 2.문자열 출력
- 아래의 main 함수와 실행의 예에 부합하는 Printer 클래스를 정의하되,
- 이번에도 역시 멤버변수는 private, 멤버함수는 public으로 선언하자.
int main(void)
{
Printer pnt;
pnt.SetString("Hello world!");
pnt.ShowString();
pnt.SetString("I love C++");
pnt.ShowString();
return 0;
}
#include <iostream>
#include <cstring>
#define MAX_LENGTH 105
class Printer
{
private:
char temp_str[105];
public:
void SetString(const char* temp)
{
strcpy_s(temp_str, MAX_LENGTH, temp);
}
void ShowString()
{
std::cout << temp_str << std::endl;
}
};
int main(void)
{
Printer pnt;
pnt.SetString("Hello world!");
pnt.ShowString();
pnt.SetString("I love C++");
pnt.ShowString();
return 0;
}
'C++ > Basic Practice' 카테고리의 다른 글
[C++ 기본 연습 문제] Chapter 07. 상속(Inheritance)의 이해 (1) | 2024.09.06 |
---|---|
[C++ 기본 연습 문제] Chapter 05. 복사 생성자(Copy Constructor) (0) | 2024.09.05 |
[C++ 기본 연습 문제] Chapter 04. 클래스의 완성 (0) | 2024.09.04 |
[C++ 기본 연습 문제] Chapter 02. 연습문제 정답 (0) | 2024.09.01 |
[C++ 기본 연습 문제] Chapter 01. 연습문제 정답 (0) | 2024.08.31 |
Comments