Programming

· Language/C++
메서드 오버로딩 class X { public: void Print(int score); void Print(const char * name); void Print(float gpa, const char *name); }; 메서드 오버로딩은 같은 이름의 메서드에 대해 다양한 매개변수를 가질 수 있도록 하는 기능이다. 불러오는 매개변수에 따라 어떤 메서드가 호출될지 결정된다. 함수 오버로딩 함수 오버로딩은 같은 이름의 함수에 대해 다양한 매개변수를 가질 수 있도록 하는 기능이다. 매개변수 목록을 제외하고는 동일한 이름의 함수이며, 반환형이 다르더라도 상관없다. 위의 코드에서 int Print(int score)는 오류가 발생한다. 함수 오버로딩은 매개변수의 타입, 순서, 개수를 고려하여 매칭을 수행하는데,..
· Language/C++
복사 생성자 인스턴스의 사본을 만드는 것. 만약 들고 있는 것이 레퍼런스라면, 레퍼런스의 주소값을 복사해줄 것인지의 문제가 있다. // Vector.h class Vector { public: Vector(const Vector& other); private: int mX; int mY; }; // Vector.cpp Vector::Vector(const Vector& other) : mX(other.mX) , mY(other.mY) // private 이지만, 같은 class 이기 때문에 접근 가능하다. { } 같은 클래스의 다른 개체를 이용하여 새로운 개체를 초기화하는 것은 다음과 같다. Vector(const Vector& other); Vector a; // default constructor 또..
· Language/C++
구조체 VS 클래스 구조체(struct)와 클래스(class)는 C++에서 데이터를 그룹화하고 캡슐화하기 위한 두 가지 주요 방법이다. 이 둘은 많은 면에서 유사하지만 몇 가지 중요한 차이점이 있다. 공통점 멤버 변수와 함수 포함: 클래스와 구조체 모두 멤버 변수와 함수를 포함할 수 있다. 캡슐화: 멤버 변수와 함수를 하나의 단위로 캡슐화할 수 있다. 인스턴스 생성: 클래스와 구조체 모두 인스턴스를 생성하여 사용할 수 있다. 차이점 1. 기본 접근 권한 구조체(struct): 기본적으로 모든 멤버가 public이다. 클래스(class): 기본적으로 모든 멤버가 private이다. // 구조체 struct Vector { int x; // public int y; // public }; // 클래스 cla..
· Language/C++
Vector 클래스의 멤버 함수 // Vector.h class Vector { public: void SetX(int x); void SetY(int y); int GetX() const; int GetY() const; void Add(const Vector& other); private: int mX; int mY; }; const의 의미 바꿀 수 없음. // const 변수 const int LINE_SIZE = 20; LINE_SIZE = 10; // compile error // const 메서드 int GetX() const; method란? 오브젝트 안의 클래스 안의 함수를 method라고 부른다. 그 안에 포함되지 않는 전역 함수를 함수라고 부른다. 이 둘은 혼용되기도 하며, 신경 쓰지 ..
· Language/C++
소멸자 // vector.h class Vector { public: ~Vector(); private: int mX; int mY; }; // vector.cpp Vector::~vector() { } 소멸자는 개체가 지워질 때 호출된다. 클래스 내에서 메모리 할당이 발생하면 오브젝트가 소멸될 때 해당 메모리를 해제해주어야 한다. 가상 소멸자 매우 중요한 개념이며, 나중에 자세히 다룰 예정입니다. 소멸자를 이용하여 메모리를 해제하지 않는다면. // mystring.cpp Mystring::Mystring() : mLength(0) , mCapacity(15) { mChars = new char[mCapacity + 1]; } // main.cpp void Foo() // main()이 호출한다고 가정 ..
· Language/C++
생성자 예제 class Vector { public: // 매개변수 없는 생성자 Vector() { mX = 0; mY = 0; } private: int mX; int mY; }; → 자바에서는 private 접근 제어자의 변수들을 먼저 보여준다 헤더 파일과 소스 코드 파일이 분리되어 있지 않다. 라이브러리를 사용하는 사람들에게는 private 함수는 접근할 수 없기 때문에 아무 의미가 없다. 소스 코드 파일을 볼 수는 없지만, 헤더 파일을 통해 함수의 호출 가능 여부를 확인할 수 있다. → C++에서는 public을 먼저 보여준다. 라이브러리를 사용하는 사람들은 어떤 변수를 사용할 수 있는지 확인한 뒤 함수를 만드는 것이 더 편리할 수 있다. 소스코드를 볼 수 없더라도 헤더파일을 보고 어떤 함수를 호..
· Language/C++
Instance 생성 방법 // Stack에 만들기 (Heap 보다 빠름) Vector a; // Heap에 만들기 (느림) Vector *b = new Vector(); 스택 메모리 간단한 설명 예약된 로컬 메모리 공간(일반적으로 1MB 이하) 함수 호출과 반환이 스택 메모리에서 일어난다. 스택 포인터를 단순히 옮기는 것. 메모리 할당 및 해제 필요 없다. 스택에 할당된 메모리는 범위를 벗어나면 사라진다. 변수 및 매개변수 크기는 컴파일 도중에 알 수 있다. 큰 개체를 많이 넣으면 스택오버플로우가 일어날 수 있다. 성능이 느려질 수 있다. 힙 메모리 간단한 설명 전역 메모리 공간(크다) 연속된 메모리 블록을 찾아야 한다. 프로그래머가 메모리 직접 할당 및 해제 메모리 누수 주의 코드 예제 스택에 생성하..
· Language/C++
Vector 클래스 만들기 class Vector { private: int mX; // 멤버 변수 'x' int mY; public: // 생성자 Vector(int x, int y) : mX(x), mY(y) {} protected: // 자식 클래스에서 접근 가능 std::string mType; }; 기본 접근 권한 C++에서의 기본 접근 권한은 private이다. 따라서 클래스 내의 멤버 변수와 함수는 기본적으로 private으로 간주된다. 접근 제어자(Access Modifier) public: 누구나 접근 가능한 영역. protected: 자식 클래스에서 접근 가능한 영역. private: 해당 클래스 내에서만 접근 가능한 영역. 접근 제어자의 역할 public: 클래스 외부에서 사용할 수 ..
coco_daddy
'분류 전체보기' 카테고리의 글 목록 (6 Page)