일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- OpenAI
- Classification
- GPT-4
- 회귀
- 오블완
- AI
- 지도학습
- LLM
- regression
- ChatGPT
- LG
- supervised learning
- 티스토리챌린지
- gpt
- 머신러닝
- 해커톤
- LG Aimers
- 분류
- deep learning
- LG Aimers 4th
- 딥러닝
- PCA
- Machine Learning
- Today
- Total
목록Programming Lang/C++ (65)
SYDev
멤버 이니셜라이저를 이용한 변수 및 const 상수(변수) 초기화 '멤버 이니셜라이저'는 객체가 아닌 멤버의 초기화에도 사용할 수 있다. 이와 관련된 다음 코드를 살펴보자. class SoSimple { pirvate: int num1; int num2; public: SoSimple(int n1, int n2) : num1(n1) // 이니셜라이저(num1의 값을 n1로 초기화) { num2 = n2; } . . . . . } 다음 이니셜라이저는 num1의 값을 n1로 초기화하라는 의미이며 선언과 동시에 초기화되는 것과 같은 유형의 바이너리 코드를 구성하여 다음 문장과 비유할 수 있다. int num1 = n1; // 이니셜라이저 반면, 생성자의 몸체에 있는 초기화 문장은 다음과 같이 선언과 초기화가 ..
생성자(Constructor) 지금까지는 정보은닉을 위해서 객체 생성을 하기 전에 Init이라는 함수를 정의하고 호출했다. 그러나 매번 이같은 과정을 반복하기 불편하기 때문에 우리는 생성자(Constructor)라는 개념을 이용할 것이다. '생성자'를 통해서 우리는 객체의 생성과 동시에 초기화가 가능해진다. 다음은 생성자의 특징을 알아보기 위한 간단한 클래스이다. class SimpleClass { private: int num; public: SimpleClass(int n) //(생성자(constructor)) { num = n; } int GetNum() const { return num; } }; 위 클래스에서 SimpleClass라는 함수가 생성자(Constructor)이며 다음과 같은 특징을 ..
문제 Chapter 03에서 제시한 과일장수 시뮬레이션 예제 FruitSaleSim1.cpp에서 정의한 두 클래스의 멤버변수는 private으로 선언이 되어있다. 그러나 다음 조건을 유지할 수 있는 장치는 아무것도 되어있지 않다. 사과의 구매를 목적으로 0보다 작은 수를 전달할 수 없다. 위의 제약사항을 항상 만족시킬 수 있도록 예제를 변경하고, 예제의 안정성을 높일 수 있도록 일부 함수를 const로 선언해보자. 문제풀이 파일명 : FruitSeller.h #ifndef __FRUITSELLER_H_ #define __FRUITSELLER_H_ class FruSel { int APPLE_PRICE; int numOfApples; int myMoney; public: void InitMembers(in..
문제 다음의 Point 클래스를 기반으로 하여(활용하여) 원을 의미하는 Circle 클래스를 정의하자. class Point { private: int xpos, ypos; public: void Init(int x, int y) { xpos = x; ypos = y; } void ShowPointInfo() const { cout
캡슐화의 이해 지난 글에서 좋은 클래스를 만들기 위한 조건으로 '정보은닉'과 '캡슐화'에 대해서 언급했을 것이다. 정보은닉에 대해서는 설명했으니 이번에는 캡슐화에 대해서 공부해보자.캡슐화는 간단하게 말해서 하나의 목적 하에 둘 이상의 기능을 모아서 그 목적을 달성하게 하는 것이다. 다음 예제는 캡슐화가 이루어지지 못한 사례이다. #include using namespace std; class SinivelCap //콧물 처치용 캡슐 { public: void Take() const {cout
정보은닉의 이해 우리가 클래스를 디자인할 때 좋은 클래스를 만들기 위해서 필요한 조건이 있다. 여기에는 '정보은닉'과 '캡슐화'가 있다. 이는 좋은 클래스가 되기 위한 최소한의 조건인데, 이번에는 우선 정보은닉에 대해 알아보자. 정보은닉을 이해하기 위해서 클래스 하나를 예시로 들어보자. 그림판에서 도형을 그리는 프로그램을 구현하기 위해서 위치좌표를 나타내는 클래스는 필수적이다. 이 클래스의 이름은 Point이고 x, y 좌표의 범위는 각각 0이상 100이하, 그리고 좌 상단의 좌표는 [0, 0]이고 우 상단의 좌표는 [100, 100]이라고 가정해보자. 이 클래스의 멤버변수가 public으로 선언되었을 때의 문제점을 살펴보자. #include using namespace std; class Point {..
객체지향 프로그래밍의 이해 객체지향 프로그래밍이란 무엇일까? 우선 객체에 대해서 이해해보자. C++에서 의미하는 객체는 "사물 또는 대상"을 의미한다. 이러한 객체는 하나 이상의 상태와 하나 이상의 행동을 가진다는 특성이 있다. 다음과 같은 문장을 예로 들어보겠다. "나는 과일장수에게 두 개의 사과를 구매했다." 여기서 객체는 '나', '과일장수', '사과'가 있다. 이런 객체들을 이용해서 우리는 '나'라는 객체가 '과일장수'라는 객체에게서 '사과'라는 객체를 구매했다고 표현할 수도 있다. 이런식으로 현실에 존재하는 사물과 대상, 그리고 그에 따른 행동을 실체화 시키는 형태의 프로그래밍을 객체지향 프로그래밍이라고 한다. 객체지향 프로그래밍의 구현 FruitSeller 그렇다면 위 상황을 코드로 옮기기 위..
헤더파일과 인라인 함수 인라인 함수는 컴파일 과정에서 함수의 호출 문이 있는 곳에 함수의 몸체 부분이 삽입되어야 하므로, 클래스의 선언과 동일한 위치에 선언되어 컴파일러가 동시에 참조할 수 있게 해야 한다. 이와 관련된 다음 예제를 살펴보자. 파일명 : CarInline.h #ifndef __CARINLINE_H__ #define __CARINLINE_H__ #include using namespace std; namespace CAR_CONST { enum { ID_LEN = 20, MAX_SPD = 200, FUEL_STEP = 2, ACC_STEP = 10, BRK_STEP = 10 }; } class Car { private: char gamerID[CAR_CONST::ID_LEN]; int fu..