C++

· 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: 클래스 외부에서 사용할 수 ..
· Language/C++
C++에서 파일 입출력 헤더 파일 : 파일 입출력 작업을 위한 헤더 파일. ifstream: 파일에서 읽기 위한 입력 파일 스트림. ofstream: 파일에 쓰기 위한 출력 파일 스트림. fstream: 읽기와 쓰기 모두를 위한 파일 스트림. 파일 스트림은 , 조정자(manipulator) 등을 지원한다. 파일 열기 open() 메서드 fin.open("HelloWorld.txt", ios_base::in | ios_base::binary); 모드 플래그 in, out, ate (끝에서), app (덧붙이기), trunc (재설정 및 쓰기), binary. 파일 닫기 ifstream fin; /* 코드 */ fin.close(); 스트림 상태 확인 close(): 각 스트림마다 사용 가능한 닫기 메서드...
· Language/C++
문자열(string) char buffeer[256]; cin.getline(buffer, 256); // 더 나은 방법 #define BUFFER_SIZE 256; char buffeer[BUFFER_SIZE]; cin.getline(buffer, BUFFER_SIZE); // 또 다른 방법 const int BUFFER_SIZE = 256; char buffeer[BUFFER_SIZE]; cin.getline(buffer, BUFFER_SIZE); 위 코드의 문제점 아무것도 읽지 못했을 때 한 줄의 문자가 256자 이상일 때(버퍼의 크기가 충분히 크지 않을 때) std::string 클래스 std::string 클래스를 이용한 문자열은 길이가 증가할 수 있다. #include std::string n..
· Language/C++
C에서 포인터를 사용하는 방법과 비교 값에 의한 호출 값을 복사해 와서 사용한다. 구조체를 값에의한 호출을 했을 때 참조에 의한 호출 참조 별칭으로 부르는 것. int number = 100; int& reference = number; // int& 는 int 변수를 참조하는 형이라는 의미를 가지고 있다. NULL이 될 수 없다. int& reference = NULL; // compile error 초기화 중에 반드시 선언되어야 한다. int& refernce; // compile error 참조하는 대상을 바꿀 수 없다. int number1 = 100; int number2 = 200; int& reference = number1; // reference는 number1을 가리키는 참조형이 된다...
· Language/C++
C에서 입력을 가져오는 경우 실행 중에 캐릭터 배열이 얼마나 할당되어 있는지 알 수 없다. scanf는 경계 검사를 하지 않음. → 5개로 할당이 되어있다면, 그것을 넘는 글자 수를 받았을 때, 지정되지 않은 메모리를 접근하려고 할 것이다. char first_name[20]; scanf(%s", first_name); C++에서 입력을 가져오는 경우 scanf() 와 cin cin 또한 char 배열의 길이를 모른다. scanf()와 같은 위험성이 있다. 이를 피하려면 setw()를 사용하면 된다. char first\_name\[20\]; cin >> first\_name; char name[4]; cin >> setw(4) >> name; 스트림 상태 : 읽어오다가 실패했을 때 상태를 저장한다. n..
coco_daddy
'C++' 태그의 글 목록 (5 Page)