본문 바로가기

C++

(15)
캡슐화 좋은 클래스가 되기 위해 필요한 조건으로 정보은닉과 캡슐화가 있다.정보 은닉과 캡슐화는 밀접한 관련이 있다. 정보은닉정보은닉은 제한된 방법으로 접근의 허용을 해서 잘못된 값으로 맴버 변수, 맴버 함수가 저장되지 않도록 확인하기 위해서 유용하게 쓰인다. 흔히, 프로그래머는 'private'으로 맴버변수를 선언하고, 해당 변수에 대한 접근을 개별적으로 부여하여, 안전한 형태로 맴버 변수의 접근을 유도하는 것이 정보은닉이다.  Const 함수 함수 내에서 맴버 변수의 접근 및 변경을 통제하는 const 함수에 의해서 저장된 값을 변경하지 않겠다는 의미이다. class Func1{private: int num;public: void InitNum(int n) { num = n; ..
다형성 객체 포인터 변수객체 포인터 변수는 객체의 주소 값을 저장하는 포인터 변수이다. Human이라는 클래스가 정의되었을 때, 다음과 같이 포인터 변수를 선언할 수 있다. Human *ptr; // 포인터 변수 선언ptr = new Human(); // 포인터 변수의 객체 참조 Human 형의 포인터 변수는 Human 객체 뿐만 아니라, Human을 상속하는 유도 클래스의 객체도 가리킬 수 있다.이를 심도있게 활용하여, '함수 오버라이딩(function overriding)' 의 특징이 가능해진다. 함수 오버라이딩함수가 오버라이딩이 된다면, 오버라이딩된 기초 클래스는, 유도 클래스의 함수에 의해 가려지게 된다. 그렇다면 , 오버 로딩vs 오버라이딩의 차이를 한번 살펴보자.오버로딩은 함수의 이름은 같지만 매개변..
C++ Static C++ static은 C의 static과 동일하다. C 언어에서의 static 함수의 개념을 정리하면 다음과 같다.- 전역 변수에서 선언된 static의 의미: 선언된 파일 내에서만 참조를 허용하겠다는 의미- 함수 내에서 선언된 static의 의미: 한번만 초기화 되고, 지역변수와 달리 함수를 빠져나가도 소멸되지 않는다. #include using namespace std;void Counter(){ static int cnt; cnt++; cout
참조자 참조자 (Reference)의 이해 참조자는 자신이 참조하는 변수를 대신하는 다른 별명이라고 생각하면 된다.예로, int * ptr = &num1;          int &num2 = ptr; 이 되었을 때, num2는 num1의 참조자가 되어지며, *ptr = *num2= num1에 변수에 접근할 수 있다는 것이다. 참조자의 특징으로는" 참조자는 수의 제한에 없으며, 참조자를 대상으로도 참조자를 선언할 수 있다"." 참조자는 변수에 대해서만 참조가 가능하며, 상수에 대한 선언이 불가능하다". int arr[3];int &ref1 = arr[0];int &ref2 = arr[1];int &ref3 = arr[2]; 위 예제와 같이, 참조자는 변수를 포함한 배열 내의 인덱스를 참조 또한 가능하다.  참조..
범위지정 연산자 Scope Resolution Operation(범위지정 연산자) - 지역 변수의 이름이 전역변수의 이름과 같을때, 전역변수는 지역 변수에 의해 가려진다는 특징이 있다. int val = 10;int Func(void){ val = 15; // 지역변수 val = 15 할당 ::val = 8; // 전역 변수 val = 8 할당} 예제와 같이, '범위지정 연산자 :: ' 을 변수 앞에 지정함으로서 Func()함수 내에서 전역변수에 접근할 수 있도록 한다.
함수 오버로딩 Function Overloading()의 이해 C 언어에서는 동일한 이름의 함수명을 허용하지 않는다. 하지만 C++ 에서는 함수 호출시 전달되는 매개변수의 인자값이 다르다면, 함수정의를 허용한다. 이러한 함수의 정의를 가르켜 '함수 오버로딩'이라고 한다. C++은 두 가지 정보를 기반으로 호출하는 함수를 찾는다.1. 함수의 이름2. 매개변수의 선언 매개변수의 개수가 다르거나, 전달되는 인수의 개수 및 자료형이 다르게 되면 함수의 오버로딩을 통해서 구분이 가능하다.즉, 함수의 반환형이 다른 것이 호출되는 함수를 구분하는 기준이 될 수 있다. #include void Func(void){ std :: cout
String 메서드 String 에서 사용할 다양한 메서드의 정리 총 정리집 #include using namespace std; int main(){ string a = "love is"; a += " pain!"; a.pop_back(); cout    +=문자열을 더할 때 보통 +=을 써서 문자열 또는 문자를 더한다. push_back()vector의 push_back()과는 비슷하지만 다르다.string의 push_back()은 문자 하나씩 밖에 넣을 수 없다.#include using namespace std; int main() { string s = "Hello"; s.push_back(' '); s.push_back('W'); s.push_back('o'); s.push_back('r'); s.push_b..
개행 문자 입력 방식 헤더파일#include  Cin 함수와 getline 함수로 나뉘어진다.Cin은 개행문자를 입력 받으며, cin >> a >> '\n' 형태를 띈다.000 천재 라고 입력을 하였을때, a 는 000만 입력을 받을것이다.따라서 cin >> a >> '\n' 과 cin >> b >> '\n'처럼 값을 받아옴으로서000천재를 입력 받을 수 있다. 이에 추가적으로 getline()함수가 존재한다.getline함수는 개행 문자의 ('\n')을 기준으로 문자열의 끝을 인식한다.사용자 정의로 개행 문자의 종료를 알리기 위해서 getline(cin, line, '.') 처럼 세번째 인자에 종료를 선언할 값을 설정하면 된다. using namespace std;string s;int main(){ getline(c..