본문 바로가기

c++ 코딩13

C++ 33 [const 메소드, 멤버변수] ▣ const 메소드 : int 함수이름() const {} ▣ const 메소드는 해당 객체 안에 어떠한 값도 바꿀 수 없다. 2023. 10. 18.
C++ [인수 객체, 인수 포인터, 인수 레퍼런스] ▣ 클래스 생성, 멤버변수, 멤버함수 생성 ▣ Play함수에 Player클래스의 객체 인수를 받는다. ▣ 인수로 받아오게 되면 바로 해당 인수의 객체를 사용할 수 있다. ▣ 다른 함수에서도 객체를 받아오면 그 해당 객체의 멤버 함수 호출 가능 ▣ 레퍼런스 인수로 받아와서 호출가능 주소를 받아오기 때문에 원본 수정 가능 ▣ 포인터로 인수를 받아 올 수 있다. ▣ 단 & 주소로 받아와야 하고 포인터로 받아온 객체는 -> 화살표로 접근해야 한다. 2023. 2. 10.
C++ [Swap, 레퍼런스 인수] ▣ int& num1 == 레퍼런스 인수(주소 값을 저장한다.) ▣ int*p = &num1; 포인터와 동일하지만 포인터는 초기값이 없으면 안 되기 때문에 그 점에 차별점이 있다. ▣ &변수이름 == 변수의 주소를 의미한다. 2023. 2. 8.
C++ 7장 [인라인 함수] ▣ 안녕하세요. 이번장에서는 인라인 함수를 공부해보겠습니다. 인라인 함수는 인라인 함수 호출 시 그 호출한 코드에 인라인 함수 코드 자체가 안으로 들어가는 함수를 의미합니다. ▣ 정리하면 짧은 코드를 함수로 만들면 함수 호출의 오버헤드가 커서 프로그램 실행 시간이 길어집니다. 오버헤드란 프로그램의 실행 흐름에서 나타나는 현상을 이야기하는데 쉽게 이야기하면 메인 함수로 프로그램을 실행 흐름 중에 다른 곳에 떨어진 위치의 함수 코드를 실행시켜야 할 때, 메모리와 시간을 드리게 됩니다. 그걸 오버헤드 현상이라고 합니다. 만약 우리가 짧은 함수를 호출할 때마다 스택 메모리를 할당하고 함수에 따라 여러 가지 연산을 하는 이 과정들로 하여금 많은 메모리와 시간을 들이게 되면 효과적이지 않고 속도가 저하됩니다. 그렇.. 2022. 10. 13.
C++ 3장 [클래스1] ▣ 안녕하세요. 이번장에서는 클래스를 공부해보겠습니다. 클래스에 대한 부분은 내용이 많아서 여러 장으로 진행하도록 하겠습니다. ▣ 클래스란 객체를 정의하는 틀이나 설계도를 이야기합니다. 클래스는 C언어에서 구조체랑 비슷하다고 생각하시면 됩니다. 클래스를 만들어서 정의하면 그게 객체입니다. 객체는 자신만의 교유한 상태 행동을 구성하고 있습니다. 다시 말해 구조체처럼 클래스 안에 멤버 변수와 멤버 함수를 선언할 수 있습니다. 객체의 상태와 행동으로 생각하시면 됩니다. 그럼 코드를 작성하며 클래스를 공부해보겠습니다. ▣ 클래스를 선언하기 위해서는 class 키워드를 사용해야 합니다. 구조체와 동일한 형식으로 class 키워드, 클래스 이름을 지정해주시고 괄호를 이용하여 클래스의 범위를 지정해줍니다. 중요한 건.. 2022. 9. 30.
C++ 1장 [출력, 네임스페이스] ▣ 안녕하세요. C++ 첫 번째 장입니다. C++을 하기 전에 C언어 공부를 꼭 해보고 C++를 공부하시면 더 C++를 접근하기 좋습니다. ^^ 하지만 C언어를 공부하지 않아도 가능하니 하나하나 포기하지 말고 끝까지 함께 코딩 공부합시다~ ▣ 이번장에서는 C++ 출력에 대해 공부해보도록 하겠습니다. 비주얼 스튜디오 2022 버전으로 공부하도록 하겠습니다. 우선 빈프로젝트를 만들어주세요. ▣ 먼저 솔루션탐색기에서 소스파일을 생성하겠습니다. ▣ 이름은 여러분들이 원하는 이름으로 정해주시고. cpp 확장자 지정해주세요. . c == C언어 ,. cpp == C++입니다. 그럼 이제 코드를 작성해보겠습니다. ▣ 먼저 # 을 공부해보겠습니다. # : 전처리기를 의미합니다. 컴파일(기계어로 번역) 전에 처리를 하는.. 2022. 7. 21.
C++ [클래스, 생성자, 소멸자] ▣ 안녕하세요. 이번장에서는 클래스에 생성자와 소멸자에 대해 공부해보겠습니다. ▣ MyClass라는 클래스를 생성해주시고, public에 MyClass()와 ~MyClass() 함수를 만들어보겠습니다. MyClass()는 클래스가 생성되었을 때 실행되는 함수이고, ~MyClass()는 클래스를 생성한 함수가 끝나게 되면 소멸되는 함수입니다. ▣ 메인에서 MyClass my;로 정의하고 코드를 실행하면 메인 시작 -> 생성자 -> 메인 끝 -> 소멸자 이렇게 출력되는 걸 확인할 수 있습니다. 여기서 중요한건 코드가 어떤 순서로 흘러가는지 출력 함수로 확인해보는 게 중요합니다. ▣ 이번에는 char *p 포인터를 선언해주시고, p = new char[100000] 메모리를 할당합니다. 그리고 소멸자에서 de.. 2022. 4. 19.
C++ [포인터, const] ▣ 안녕하세요. 이번장에서는 C++ 포인터에서 const를 사용하는 방법을 공부해보겠습니다. 포인터에서 이해가 안 되는 분은 C언어 포인터 부분을 꼭 공부해주세요. ▣ 기본적으로 포인터를 선언하여 num 변수에 주소를 지정하고 출력을 해보겠습니다. 그럼 p포인터가 num에 주소에 있는 값을 출력하는 걸 확인할 수 있습니다. ▣ 이번에는 &num 주소를 가르치고 있는 p포인터에 200을 대입해보겠습니다. 그럼 num에 값이 200으로 바뀐걸 확인할 수 있습니다. ▣ 여기서 const int * p = &num 포인터에 자료형 앞에 const 상수로 지정하는 키워드를 붙이게 되면 선언 정의 후에 값을 바꾸게 되면 오류가 나는 걸 확인할 수 있습니다. 포인터에 자료형 앞에 const를 붙이면 지정한 주소의 값.. 2022. 4. 13.
C++ [매크로, inline, #define] ▣ 안녕하세요. 이번장에서는 C++에서 매크로와 인라인을 공부해보겠습니다. 매크로는 우리는 C언어에서 #define으로 정의를 하는 부분과 동일합니다. #define PI 3.1412 이렇게 main함수 밖에서 #include와 함께 적었던 코드 기억하시죠. 그럼 PI라는 상수 기호가 3.1412 값으로 정의가 되는 걸 했던 기억을 있을 겁니다. #은 전처리기고 컴파일하기전에 처리해주는 걸 의미합니다. 그렇기 때문에 int PI = 3.1412 이렇게 선언 및 정의를 해준 것보다 과정에서도 컴파일 전에 하기 때문에 적겠죠? 이 부분을 기억하시고 이제 매크로를 활용하여 함수를 정의해보겠습니다. ▣ 매크로 함수를 정의하려면 함수를 정의하는 것과 거의 동일합니다. 함수 이름 앞에 #define을 붙어주시고 S.. 2021. 7. 30.
C++ [레퍼런스변수, 포인터, 주소, 참조] ▣ 안녕하세요 이번장에서는 포인터를 꼭 공부하고 진행해주세요. 메모리 주소에 대한 개념이 없으면 어렵습니다. ▣ 첫번째는 포인터를 이용해서 변수에 값을 바꿔보도록 하겠습니다. int num = 10; 변수를 정의하고 int *으로 int에 주소를 저장하는 pNum를 주소를 선언해줍니다. 그리고 &num에 주소를 대입해서 넣어주세요 그리고 값과 주소를 출력하는 코드를 넣고 *pNum 포인터로 간접으로 접근해서 20으로 대입을 해주고 출력을 하면 주소가 동일한걸 확인할 수 있고, 값이 바뀐 것도 확인할 수 있습니다. ▣ 이부분을 C++에서는 더 직관적으로 사용하게 만든 게 레퍼런스 변수, 참조 변수입니다. ▣ 이번에는 C++에 레퍼런스변수로 주소를 저장해서 값을 바꿔보겠습니다. 쉽게 정의를 해보겠습니다. 포.. 2021. 7. 23.
C++ [함수 오버로딩] ▣ C언어에서는 똑같은 이름에 함수를 선언하고 정의해서 사용하게 되면 컴파일 오류가 나오게 됩니다. 하지만 C++에서는 이 부분을 함수 오버 로딩을 통해 여러 함수를 같은 이름으로 사용할 수 있습니다. ▣ 전에 C언어 코드를 .cpp소스 코드 파일을 만들어 코드를 작성해보겠습니다. C++에서 sum이라는 이름에 함수를 두 가지를 선언했습니다. 함수 오버로딩을 하는 방법은 아주 간단합니다. 위에 코드처럼 함수에 매개변수에 변수에 갯수가 다르거나, ▣ 매개변수에 변수에 갯수가 같더라도 자료형이 다르면 같은 이름에 함수를 사용할 수 있습니다. 이게 함수 오버로딩입니다. 2021. 7. 2.
C++ [구조체 함수 사용] ▣ 먼저 C언어와 동일하게 구조체를 선언해줍니다. typedef는 struch My_Game을 하나에 별칭으로 지정하기 위함이니다. MyGame;으로 지정하면 main함수에서 struch My_Game 이렇게 작성하지 않아도 MyGame mygame 이렇게 선언할 수 있습니다. ▣ 그리고 더하기를 함수를 만들어주시고 main함수에서 mygame.sum = Calculator(mygame.number1, mygame.number2); 로 함수에 우리가 초기값으로 지정한 값을 주고 반환값을 sum에 넣어주고 출력을 하면 값이 잘 나오는걸 확인할 수 있습니다. 2021. 6. 8.
C++ [출력, 입력] ▣ 먼저 입출력을 사용하기 위해서는 #전처리기로 선언을 해줘야합니다. #include 표준입출력을 하기 위한 헤더파일을 선언했습니다. 그리고 main 함수에 std:: 를 넣어주세요 이건 std::라는 클래스에 접근한다라고 생각하시면 됩니다. cout은 c는 콘솔, out은 output을 생각하시면 됩니다. x >> y; 두개를 입력받기 위해 x, y를 넣어주세요. 그리고 입력을 해주시면 되는데, 여기서 중요한건 >> x >> y는 띄어쓰기를 기준으로 두개에 정수를 입력받는다라는 것 기억해주세요. ▣ 또한 C언어에서처럼 scanf함수로 입력 받을 수도 있습니다. 이렇게 띄어쓰기 기준으로 입력을 받습니다. 여기서 scanf에 _s 를 붙이는 이유가 궁금하시다면 c언어 공부에 입력부분을 참고해주세요. ▣ 또.. 2021. 5. 21.