c++(5)
-
[c++] 기타 연산자 오버로딩
[c++] 기타 연산자 오버로딩 c++에는 new와 delete라는 연산자가 있다. 내가 왜 연산자 라는 부분을 강조하냐면 이 new와 delete를 연산자로 인식하지 않는 사람들이 있기 때문에 강조를 해봤다. 또한 연산자 라는 말은 연산자 오버로딩이 가능하단 말이기도 하다. 그리고 new,delete의 연산자 오버로딩은 다른 연산자와 다른 부분들이 있다. new라는 연산자를 오버로딩 할 때는 실제로 new연산자가 하는 메모리 공간을 할당하는 것과 반환되는 주소 값의 형을 할당하는 자료 형에 맞게 변환시켜주는일, 생성자를 호출하는 일을 전부 오버로딩 하는 것이 아니라. 메모리 공간을 할당하는 일만 하는 것이다. 그렇다면 "나머지 작업은 누가 하지?" 라는 의문이 들 수도 있다. 그에 대한 답변을 하자면 ..
2021.01.30 -
[c++]참조자
[c++] 참조자 변수란 무엇인가? 변수는 할당된 메모리 공간의 이름입니다. 변수의 이름을 통해 메모리 공간에 접근이 가능하죠. 변수에 대해 생각하면 메모리 공간에 이름을 여러 개 붙일 수는 없을까? 사실 이건 크게 생각해볼 필요도 없다. 왜냐하면 C언어를 어느 정도 할 줄 안다면 이것을 이미 할 줄 알기 때문이다. int num =10;과 같이 변수를 하나 선언하고 값을 넣으면 10으로 초기화된 메모리 공간에 num이라는 이름이 생깁니다. 그리고 int *ptr = #이라고 한다면 num의 주소를 포인터 ptr에 저장하게 됩니다. 이것을 참조자로 바꾸게 된다면 int &num2 = num;이 됩니다. 이 문장의 의미는 num의 '참조자'인 num2를 선언하라 라는 의미가 되고 num2는 num과..
2020.11.11 -
[C++]이름공간
[C++] 이름 공간 이름 공간이란 다소 생소하겠지만 그렇다고 어려운 것은 아니다. 이름 공간을 풀어서 이야기하자면 공간에 이름을 붙여놓은 것이다. 말 그대로 특정 영역에 이름을 붙인 것이다. 등장 배경/필요 이유 프로그램이 대형화되면서 이름의 충돌 문제가 생기기 시작했습니다. 예로 한 시스템을 만들 때 여러 업체가 참여해서 서로 일을 구분해서 독립적으로 만들어오자!라고 정한 뒤 서로 시스템을 구현해서 들고 왔는데 합치려고 하니 변수명이 같아서 한 업체에서 만들어온 시스템의 변수를 바꿔야 하는 상황이 생긴 것이다! 이런 문제를 해결하기 위해서는 미리 변수명을 정해놓으면 좋지만 그건 근본적인 해결책이 아니다 그렇기 때문에 C++에서는 이름 공간이라는 문법으로 이 문제를 해결했다. 이제 이름 공간의 사용법에..
2020.11.07 -
[C++]인라인(inline) 함수
[C++] 인라인(inline) 함수 인라인 함수라는 이름은 프로그램 코드 라인안에 있는 함수라는 뜻이다. 인라인 함수보다 먼저 매크로 함수에 대해 알아보자 매크로 함수 장점:함수가 코드 안에 있어서 성능 향상이 될 수 있다. 스택의 할당 과정이 없다. 단점:함수의 정의가 복잡하다. 따라서 복잡한 함수는 정의하기 어렵다. 예를 들면 #define ADD(x) ((x) + (x)) int main(void) { std::cout
2020.11.05 -
[C++]매개변수 디폴트 값(Default Value)
[C++] 매개변수 디폴트 값(Default Value) C++은 매개변수에 디폴트 값이라는 것을 설정할 수 있다. 이 디폴트 값은 매개변수에 미리 값을 설정해 두는 것을 의미한다. C++ 함수의 매개변수는 다음과 같이 설정하는 것이 가능하다. int func(int num =7) { return num +1; } int func2(int num1= 5,num2 = 9( { return num1 + num 2; } 위의 함수 func에서 매개변수 선언은 int num =7이다. 이것은 '이 함수에 아무 인자도 오지 않으면 7이 전달된 것으로 생각할게'라는 의미이다. 그렇기 때문에 다음 두 함수의 호출은 완전히 똑같다. func(); func(7);. func2도 마찬가지로 func2(); func2(5,..
2020.11.05