일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Machine Learning
- LG Aimers
- Classification
- gpt
- deep learning
- LLM
- supervised learning
- LG Aimers 4th
- 머신러닝
- 티스토리챌린지
- OpenAI
- regression
- 분류
- ChatGPT
- 딥러닝
- PCA
- 해커톤
- AI
- 지도학습
- LG
- 오블완
- GPT-4
- 회귀
- Today
- Total
목록Programming Lang (84)
SYDev
앞서 public과 private 선언에 대해 설명할 때 protected 선언은 상속과 관련있기 때문에 설명을 미뤘었다. 그렇다면 상속을 배웠으니 이제 protected 선언에 대해 공부해보자. protected로 선언된 멤버가 허용하는 접근의 범위 C++의 접근제어 지시자에는 private, protected, public 이렇게 세가지가 존재한다. 여기서 private이 허용하는 접근의 범위가 가장 좁고, public이 허용하는 범위가 가장 넓으며 protected는 그 중간의 범위에 해당한다. protected는 private과 거의 모든 부분에서 유사하지만, 단 한 가지 차이점이 있다. 바로 private 선언된 멤버변수는 유도 클래스에서 접근이 불가능하지만, protected 선언된 멤버변수는..
상속이란? "UnivdStudent 클래스가 Person 클래스를 상속한다." 라고 한다면 UnivStudent 클래스는 Person 클래스가 지니고 있는 모든 멤버를 물려받는다. 즉, UnivStudent 객체에는 UnivStudent 클래스에 선언된 멤버 뿐만 아니라 Person 클래스에 선언된 멤버도 존재하게 된다. 상속의 방법과 그 결과 예제를 통해서 상속의 방법과 결과를 확인해보자. 우슨 다음과 같이 Person 클래스를 정의하겠다. class Person { private: int age; //나이 char name[50]; //이름 public: Person(int myage, char * myname) : age(myage) { strcpy(name, myname); } void WhatY..
문제의 제시를 위한 시나리오의 도입 상속을 제대로 다루기 위해서 상속을 통해 해결할 문제부터 살펴보자. 다음 예제는 OrangeMedia라는 회사가 운영하는 '급여관리 시스템'이라는 가정이다. 회사가 이 시스템을 처음 도입할 때만 해도 직원의 근무형태는 '정규직(Permanent)' 하나였다. 따라서 이 시스템은 정규직 직원 관리를 위한 형태로 설계되었다. 그럼 일단 정규직 직원의 관리를 목적으로 정의된 클래스를 먼저 하나 보도록 하자. class PermanentWorker { private: char name[100]; int salary; // 매달 지불해야 하는 급여액 public: PermanentWorker(char * name, int money) : salary(money) { strcpy..
C언어에서의 static 전역변수에 선언된 static -> 선언된 파일 내에서만 참조를 허용 함수 내에 선언된 static -> 한 번만 초기화되고, 지역변수와 달리 함수를 빠져나가도 소멸 x 이 중에서 함수 내에 선언된 static과 관련된 예제를 살펴보자. #include using namespace std; void Counter() { static int cnt; // static 변수는 전역변수와 마찬가지로 초기화하지 않을 시에 0으로 초기화된다. cnt++; cout
클래스의 friend 선언 friend 선언은 대상이 되는 클래스에게 friend 선언을 한 클래스의 private 영역까지 모두 접근할 수 있는 권한을 주는 것이다. 예를 들어서 설명하자면, A 클래스와 B 클래스가 있다고 생각을 해보자. A 클래스가 B 클래스를 대상으로 friend 선언을 하면, B 클래스는 A 클래스의 private 멤버에 접근이 가능해진다. 하지만, B 클래스가 A클래스를 대상으로 friend 선언을 하기 전까지는 A 클래스는 B 클래스의 private 멤버에 접근이 불가능하다. 추가적으로 friend 선언은 클래스 내에 어디서 선언이 되든 상관이 없다(private, public 영역 상관없이 효과를 발휘함). friend 선언과 관련된 예제를 살펴보자. #include #in..
const 객체와 const 객체의 특성들 const는 변수를 상수화 하듯이, 객체도 상수화할 수 있다. const int num = 10;// 변수 상수화 const SoSimple sim(20);// 객체 상수화 객체를 상수화한다는 것은 객체의 데이터 변경을 허용하지 않겠다는 뜻과 같다. 때문에 상수화된 객체를 대상으로는 const 멤버함수의 호출 이외에는 할 수 있는 것이 없다. 변경시킬 능력이 있는 함수는 아예 호출이 불가능하다는 것이. 예제를 통해 const 객체의 특성을 확인해보자. #include using namespace std; class SoSimple { private: int num; public: SoSimple(int n) : num(n) { } SoSimple& AddNum(..

복사 생성자의 호출 시점 앞선 게시글로 다음의 경우에 복사 생성자가 호출된다는 사실은 알게 되었다. Person man1("Lee dong woo", 29); Person man2 = man1; // 복사 생성자 호출 이 경우를 포함해서 복사 생성자가 호출되는 경우는 크게 3가지가 있다. case 1 : 기존에 생성된 객체를 이용해 새로운 객체를 초기화(위의 경우) case 2 : Call-by-value 방식의 함수 호출 과정에서 객체를 인자로 전달하는 경우 case 3 : 객체를 반환하되, 참조형으로 반환하지 않는 경우 + case 2 -> 함수가 호출될 때 매개변수에 메모리 공간이 할당되고 해당 공간에 전달된 인자가 저장(변수의 초기화)됨 + case 3 -> 함수가 값을 반환하면, 별도의 메모리 ..

디폴트 복사 생성자의 문제점 디폴트 복사 생성자는 멤버 대 멤버 복사를 진행한다. 그리고 이러한 복사 방식을 가리켜 '얕은 복사(shallow copy)'라고 하는데, 이 경우 멤버변수가 힙의 메모리 공간을 참조하는 경우에 문제가 된다. 다음 예제를 통해서 문제점을 확인해보자. 해당 예제는 생성자와 소멸자 파트에서 나왔던 Destructor.cpp의 main함수를 조금 수정한 것이다. #include #include using namespace std; class Person { private: char * name; int age; public: Person(char *myname, int myage) { int len=strlen(myname)+1; name=new char[len]; strcpy(n..