클래스(5)
-
[Visual Studio 2019] 클래스 생성하는 법
클래스 생성하는 법
2024.12.24 -
[C++] friend 선언(클래스, 함수)
friend 선언 - 클래스• 클래스에 friend 선언을 하면 private 멤버에 접근할 수 있다.애초에 private의 목적이 외부에 공개하지 않는 것이기 때문에 웬만하면 friend를 사용하지 않는 게 좋다.접근하기 불편하다고 friend 선언이나 public 선언을 하면 어디에서든지 접근하여 사용할 수 있어서 유지보수가 힘들어진다.따라서 데이터를 주고받을 일이 많지 않다면 멤버는 private으로 감추고 멤버 함수를 통해서만 접근할 수 있도록 막아주는 방법이 좋다.▷ 예시#include using std::cout;using std::endl;class A; // A 클래스 미리 선언class B {private: int bi; friend class A; // A 클래스는 B 클래스..
2024.04.03 -
[C++] 구조체 · 클래스 템플릿으로 리스트 구현
코드를 작성할 때 노드는 구조체로, 리스트는 클래스로 만들었지만, C++에서 클래스와 구조체는 같아졌기 때문에 어떤 것을 사용하든 크게 상관은 없다.구조체도 생성자, 소멸자, 상속이 가능해졌다.단, 클래스와 구조체의 차이점은 범위 지정자의 기본값이 다르다는 것이다.구조체는 public이고 클래스는 private이다. 구조체와 클래스 중 어떤 것을 사용할지 모르겠을 때, 나름의 규칙을 만들면 좋다.ex) 기능이 많지 않을 때(단순히 데이터를 묶어놓고 데이터를 저장하는 등)는 구조체 키워드를, 리스트처럼 컨테이너로써의 복잡한 기능이면 클래스로 선언한다. ※ 구조체 템플릿은 구조체가 아니다.프로그래머는 넣은 데이터가 노드 단위인 것을 알 필요가 없어야 된다.다시 말해서, 리스트에 데이터를 넣을 뿐, 데이터를 ..
2024.03.18 -
[C++] 클래스를 이용한 가변 배열
CArr.h#pragma onceclass CArr // (C는 class라는 의미로 사용했다.){private: int* m_pInt; // 주소값 (m = 멤버라는 의미로 사용했다.) int m_iCount; // 현재 들어와있는 데이터 개수 int m_iMaxCount; // 최대 개수public: void push_back(int _iData); // 가변 배열로 따지면 데이터 추가 함수이다.public: CArr(); // 가변 배열로 따지면 => 배열 초기화 함수 ~CArr(); // 가변 배열로 따지면 => 배열 메모리 해제 함수}; CArr.cpp#include "CArr.h"// 생성자CArr::CArr() : m_pInt(nullptr) , m_iCount(0) , m_iM..
2024.03.18 -
[C++] 클래스 (+ 멤버 함수, this 포인터)
아래 링크 클릭 시 해당 본문으로 이동멤버 함수this 포인터클래스(Class)멤버 함수• 클래스가 사용하는 전용 함수 (클래스 내부에 정의된 함수)• 클래스의 객체가 필요하다.멤버 함수를 호출하려면 해당 클래스의 실체화가 되어있는 변수인 객체가 필요하다.• 멤버 함수를 객체를 통해서 호출하면 해당 객체의 주소가 this 포인터로 전달된다.this 포인터클래스의 멤버 함수를 호출 시 호출할 객체(instance, 인스턴스)를 찾으려면 this 포인터를 사용해야 한다.• 생략되어 있지만 모든 멤버 함수에 추가되어 있는 매개 변수로, 해당 멤버 함수를 호출한 객체의 주소를 가리키는 상수 포인터이다.this 포인터에 저장된 주소(현재 객체의 주소)를 수정할 수 없지만, const로 표시되지 않으면 가리키는 개..
2024.03.18