Coding/Tip !!
-
c++ 정적 배열사용 arrayCoding/Tip !! 2018. 9. 19. 14:18
보통 우리는 배열을 사용 할 때 123456#include int main(){ int arr[5] = { 1, 2, 3, 4, 5};} d처럼 선언한다. 하지만 좀 더 쉽고 다양하게 사용할 수 있도록 선언하는 방법이 있다.1234567#include #include int main(){ std::array hello_Arr = { 1, 2, 3, 4, 5};cout 내부에 배열의 크기를 나타내는 숫자가 있어야한다는 점이다.-> 보통 배열은 int arr[] ={ 1,2,3,4,5 } 가 가능하지만 위의 표현은 그런것이 불가능하다는 점이다. 이런 식으로 선언할 경우 다양한 기능을 이용할 수 있는데 대표적으로 배열에 대한 값을 sort할 수 있다.1234567891011#include #include #i..
-
함수의 인자 사용 시, 레퍼런스 이용하기!Coding/Tip !! 2018. 9. 19. 14:03
함수의 인자 사용 시, 레퍼런스 이용하기! 함수의 인자로 값을 넣어주면 해당 함수를 사용할 때 그 인자값들이 복사가 된다. 예를 들어 func(int a[1000]) {} 이라는 함수가 있다면 해당 함수가 호출 될 경우 1000이라는 크기를 가진 배열이 복사가 된다. 1000이지만 이것보다 더 크기가 큰 인자인 경우 시간이 더 걸릴 수 밖에 없다. 이 때 해결법은 포인터를 사용해도 좋지만 래퍼런스 &를 쓰면 참 편하다~ 만약 해당 함수에서 인자값이 변하길 원치않다면 const를 앞에 붙여서 수정을 막을 수도 있다.
-
foo 함수Coding/Tip !! 2018. 9. 19. 13:32
void foo(){} 와 void foo(void) {}는 언어마다 다르게 해석된다. c에서 foo 함수 void foo() : 받을 인자의 타입과 수가 정해지지 않음void foo(void) : 함수 foo는 인자를 받지 않음 c++에서 foo 함수void foo() : foo는 아무런 인자를 받지 않는다.void foo(void) : foo는 아무런 인자를 받지 않는다. https://stackoverflow.com/questions/2750316/this-vs-this-in-c
-
포인터와 역참조Coding/Tip !! 2018. 9. 19. 05:12
포인터 * * 란 역참조(Dereference)연산자라는 의미이다. -> 포인터 변수에는 메모리 주소가 저장되는데 이 메모리주소의 값을 가져올때 사용하는 것이 바로 역참조 연산자(*)이다. 1234567int *pointer; // 포인터 변수 선언 int test =1; // test에 1을 저장 pointer = &test; // test의 메모리 주소를 포인터 변수에 저장한다는 의미 *pointer = 7; // 역참조 연산자를 의미함으로 test의 메모리 주소에 접근하여 7을 저장함 이 경우cout
-
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 변수는 지역변수와 전역변수의 성질을 둘 다 가진다고 할 수 있다.