기타

· 기타/C++
레퍼런스 변수에 이름을 하나 더 만들어 줄 수 있다. #include int main() { int nData{}; int &ref = nData; ref = 100; printf("%d\n", nData); // 100 출력 } 주의 사항 #include int main() { int nData{}; // int &ref; // 오류!! int &ref = nData; // 선언하면서 대입해야 함. ref = 100; // ref를 부르면 nData를 부르는 것과 같다. printf("%d\n", nData); // 100 출력 } 레퍼런스와 포인터 차이 1. 레퍼런스는 NULL값이 존재하지 않는다. (포인터는 NULL값 있음.) 레퍼런스는 선언하면서 바로 값을 대입하기 때문에, NULL값 없음. 2...
· 기타/C++
Malloc, New 키워드의 차이 동적 할당을 할 때에는 Malloc과 New 키워드를 사용할 수 있는 데, 2가지의 차이점이다. #include int main() { // 둘 다 동적할당임. malloc // 생성자 호출 없이 메모리 잡음. c언어에서 쓰던 함수. new // 생성자 호출 해 줌. 내부에서 malloc을 쓰고, 생성자도 불러준다. } 해제 할 때는 free랑 delete 키워드가 있는데, free는 소멸자 안 불러준다. delete는 소멸자 호출하고 삭제한다. C++에서는 new, delete 키워드를 사용하면 된다. 동적할당 예시 코드 일반 변수 #include int main() { int *p{}; p = new int{}; *p = 100; printf("%d\n", *p);..
· 기타/C++
이전 글인 2020/07/10 - [기타 공부/C++] - [C++] 클래스 기본 동작 개념 에서 총 5단계로 나누었다. 1. 생성 2. 준비 3. 사용 4. 해제 5. 삭제 여기서 우리는 1. 생성과 2. 준비에 대해서 알아보겠다. 보기 편하게 [1. 생성 단계] [2. 준비 단계] 처럼 단계를 표현하겠습니다. 이렇게 완전 구분해서 안 외워도 됌. 흐름을 이해하려고 개념적으로 구분했음. 생성자란? Constructor 객체가 처음 생성될 때 호출된다. 클래스명과 똑같이 이름을 지어야 한다. #include class C_TEST { private: int m_nData; public: C_TEST(); // 생성자 선언입니다. void setData(int nData); void getData(int ..
· 기타/C++
클래스는 총 5단계로 동작하는 것으로 구분할 수 있다. 1. 생성 2. 준비 3. 사용 4. 해제 5. 삭제 예시 클래스 #include class C_TEST { private: int m_nData; public: void init(int nData); void setData(int nData); int getData(); }; 1. 생성 단계 생성 단계에서는 클래스의 존재를 만든다. (메모리를 잡는다.) int main() { C_TEST cTest{}; // 생성 } 2. 준비 단계 변수들을 초기화해준다. ( 정해진 건 아니지만, init 이라는 이름으로 함수를 만들자. ) 생성과 준비 단계를 분리하지 않으면 나중에 클래스와 클래스를 조립할 때 힘들 수 있다. void C_TEST::init(in..
· 기타/C++
기본 문법 #include class C_TEST { private: int m_nData; // 멤버 변수는 m_ 를 붙이자. 단축키 쓸 때 편해짐. public: void setData(int nData); int getData(); }; int main() { } void C_TEST::setData(int nData) { m_nData = nData; } int C_TEST::getData() { return m_nData; } 클래스는 구조체와 네임스페이스의 기능을 모두 갖고 있다. 클래스와 구조체 차이? 구조체는 함수 못 만드는 줄 알았는데, 버전이 올라가면서 만들 수 있다고 한다. 근데 구조체로 함수 만들거면 클래스로 만들자. 가장 큰 차이점은 사용 용도이다. 구조체는 변수에 직접 접근해서 ..
· 기타/C++
기본 문법 #include namespace N_CALCULATION { int add(int nData1, int nData2); int mul(int nData1, int nData2); } int main() { printf("%d\n", N_CALCULATION::add(10, 20)); printf("%d\n", N_CALCULATION::mul(2, 5)); } int N_CALCULATION::add(int nData1, int nData2) { return nData1 + nData2; } int N_CALCULATION::mul(int nData1, int nData2) { return nData1 * nData2; } 네임스페이스는 찾아쓰기 쉬우려고 사용한다. using namespac..
· 기타/C++
기본 문법 #include struct S_DATA { int nData; float fData; }; int main() { S_DATA sData{}; sData.nData = 100; sData.fData = 50.5f; printf("%d\n", nData); printf("%f\n", fData); } 구조체는 변수들을 그룹짓는 것이다. sData.nData = 100; sData.fData = 50.5f; 이렇게 직접 접근해서 값을 바꾸기 때문에, 구조체는 변수가 public 으로 선언된다. 구조체 메모리 사이즈 계산하기 가장 큰 자료형을 기준으로 메모리 공간을 잡는다. int 4바이트, char 1바이트기 때문에 int를 기준으로 메모리를 잡는다. struct S_TEST { int n1; ..
· 기타/C++
c++ 에서 배열을 전달하려면 포인터를 사용하는 방법밖에 없다. 예제를 참고하면서 이해하자. 예제 배열의 총합을 더하는 함수를 만들어보자. #include void totalData(const int *pData, int nLength, int *pTotal); int main() { int arData[5]{ 5,4,3,2,1 }; int nTotal{}; totalData(arData, 5, &nTotal); printf("배열의 총합 : %d\n", nTotal); } void totalData(const int * pData, int nLength, int *pTotal) { *pTotal = 0; for (int i = 0; i < nLength; i++) { *pTotal += pData[i]..
푸쿠이
'기타' 카테고리의 글 목록 (23 Page)