Coding
-
friend 키워드 사용Coding/Tip !! 2018. 9. 19. 01:32
friend 지정되어있는 해당 함수 또는 클라스에 대해 자신의 private이나 protected 멤버를 public 권한으로 접근하게 해주는 기능을 하는 키워드이다. 사용법friend class 클래스이름; friend 함수이름; friend 클래스이름::함수이름; -> 이를 사용하면 객체 사용이 편리해지나 캡슐화를 망가뜨리게되는 단점이 있다.-> 그렇기 때문에 너무 많이 사용하는 것은 권장하지 않는다. 아래와 같은 코드를 예시로 들겠다. main.cpp1234567891011121314#include #include "test.h" using namespace std; int main(){ testa a; testb b; b.func(a); return 0;} test.h1234567891011121..
-
::연산자와 . 연산자Coding/Tip !! 2018. 9. 19. 01:08
:: 연산자는 클래스에 사용되고. 연산자는 객체에 사용된다. Aclass aa;가 있고 해당 클래스인 Aclass내에 Func 이 정의되어있다면 .연산자는 aa.Func() 객체가 함수를 호출하는데 사용될 수 있으며 ::연산자는 void Aclass::Func()으로 클래스를 정의할 떄 사용되거나 static으로 구현된 함수를 클래스에서 호출하는데 사용된다. 1234567891011121314151617181920#include using namespace std; class Aclass {public: Aclass(){} static void Func(); private:}; void Aclass::Func(){ cout
-
static 변수Coding/Tip !! 2018. 9. 18. 02:34
보통 초기화를 한 변수는 Data 영역에 메모리가 할당되며, 초기화를 하지 않은 변수들의 경우 BSS 영역에 할당된다. 하지만 Static 변수는 초기화를 하지 않은 상태에서 해당 변수를 사용하지 않을 경우 메모리 자체가 할당되지 않는다 그에 반해 전역변수는 초기화를 하지 않더라도 무조건 메모리에 올라간다. Static 객체의 경우 처음 구문이 수행되는 시점에 처음 생성자를 호출하도록 할 수 있으며 이를 함수화해서 호출하면 생성자의 호출 시점을 조정하는게 가능해진다. 다른점은 초기화를 한 번만 한다는 점 (프로그램이 종료될 때까지 메모리공간에 존재한다)과 지역변수와 달리 해당 함수가 반환되어도 소멸되지 않는다. Static 변수는 지역변수와 전역변수의 성질을 둘 다 가진다고 할 수 있다.
-
const 참조자Coding/Tip !! 2018. 9. 17. 18:53
& 연산자는 변수의 주소값을 반환한다우리가 pointer를 공부할 때 한번쯤은 보게되는 &이다.&는 참조자선언을 의미한다. 변수의 주소값을 반환하려면 할당된 메모리 공간이 필요하고 그렇기 때문에 이는 상수가 아닌 변수에 사용된다.12345678#include int main(){ int num = 7; int *pointer = # int &refer = num; return 0;} int &refer = 7; -> 참조자는 이미 선언된 할당된 메모리를 가진 변수를 대상으로 사용이 가능함, 변수가 아닌 상수를 참조했음으로 잘못됨int &refer; -> 아무것도 참조하는 대상이 없음int &refer = NULL; -> NULL을 참조함으로 에러임 하지만 예외의 경우가 있다. const 참조자는 ..
-
댕글링 포인터 ( Dangling Pointer)Coding/Tip !! 2018. 9. 17. 18:28
댕글링 포인터란.. 해제된 메모리 영역을 가리키고 있는 포인터를 의미다. 이러한 댕글링 포인터가 가리키고 있는 메모리는 더이상 유효하지 않음으로 Premature free란 의미인 너무 급한 해제 또는 조숙한 해제라고 하기도 한다.메모리 해제 한 뒤에 해제된 메모리에 접근하거나 함수 호출에서 자동변수를 가리키는 포인터를 반환하기에 아래의 결과가 나타나게 된다. 12345678910111213#include int main(){ bool a = true; int *point; if(a){ int dang=5; point = &dang; } //point는 댕글링 포인터가 된다. 이유는 괄호안의 dang이 괄호를 벗어나면서 지역변수임으로 //할당된 스택영역이 제거되기 때문이다. return 0;} 댕글링 포..
-
strcmp와 strncmpCoding/Tip !! 2018. 8. 20. 12:39
strcmp 와 strncmp 를 사용하는 방법이 아닌 왜 사용하는가에 대한 포스팅이다. C언어에서의 기본 형식은 비교 연산으로 값의 크기를 비교한다. 하지만 배열은 메모리 주소를 값으로 가지기 때문에 비교연산시에 메모리 주소를 비교하게 된다. 그러므로 원치 않는 결과가 발생하게 된다. 예를 들어 보겠다. char example1[10] = "hi hi"char example2[10] = "hi hi" if(example1 == example2){cout
-
Syncronize 와 UnsyncronizeCoding/Tip !! 2018. 4. 10. 17:59
Syncronize란? 동기의 의미로 어떠한 루틴이 진행됨에 있어서 제어권을 바로 반납하지않고완전히 루틴이 종료되어야만 반납함을 의미한다. Unsyncronize?란? 비동기의 의미로 어떠한 루틴이 진행됨에 있어서 루틴이 완전히 종료되지 않았어도 제어권을 반납하고 다음 것을 바로바로 진행함을 의미한다. 블러킹이란?블러킹은 함수를 호출하고,해당 결과가 나올때까지 함수를 반환하지 않는다는 의미이다.. 넌블러킹이란? 넌블러킹은 결과가 나올 때까지 기다리지 않으며 함수를 바로 반환한다.