본문 바로가기
반응형

프로그래밍/C++59

C++ 소멸자란? 소멸자란 객체의 사용이 끝나고 메모리의 반환될 때 자동으로 실행되는 코드를 말합니다. 생성자 처럼 사용자가 따로 선언을 하지 않으면 컴파일러가 컴파일시 자동으로 생성해줍니다. #include using namespace std; class A { int num; public: ~A() {} }; int main(void) { A a; return 0; }​ 이렇게 생겼습니다. '~' 로 시작하게 됩니다. 그럼 주로 어떨때 사용이 되느냐? #include using namespace std; class A { int * num; public: A() { num = new int[10]; } ~A() { delete num; } }; int main(void) { A a; return 0; }​ 이처럼 객채.. 2019. 2. 22.
C++ this 포인터?? 그럼 *this 는 뭐지? ※ *this에 대한 설명은 맨 아래에 설명하고 있습니다. 맨 아래만 보면 이해가 잘 가지 않을테니 처음부터 차근차근 읽어주시기 바랍니다.^^ 또한 설명 중 C++의 '참조자'와 포인터의 '값의 참조' 부분이 햇갈릴 수 있으니 유의해 주세요!! C++ 에서 this란 자기 자신을 나타내는 말입니다. 즉 Class A a; 라는 객체가 있고 이 a의 주소값은 0x10 이라고 가정한다면 a 객체에서의 this는 0x10이라는 뜻입니다. 일단 코드로 확인해 보자면 #include using namespace std; class A { int num; public: void print_This() { cout 2019. 2. 22.
C++상속 관계에서의 생성자 호출 생성자는 객체를 만들게 되면 자동으로 실행되는 코드 입니다. 그럼, 상속관계에서의 생성자 호출은 어떤식으로 진행이 될지? 코드로 설명하겠습니다. #include using namespace std; class A { public: A() { cout 2019. 2. 21.
C++의 생성자, 문자열 초기화 C2664 오류시 해결!! C++에서 클래스를 생성하면 생성자가 자동으로 생깁니다. 여기서 생성자란!! 객체선언시 자동으로 실행되는 코드를 말합니다. #include using namespace std; class A { A() {}; //이런 코드가 원래 생기지만 보이지 않을 뿐!! }; int main(void) { return 0; } ​ Class를 선언하게 되면 해당 Class의 이름과 같은 함수가 생성되고 위와 같이 아무런 기능이 없이 생성되는 생성자를 '디폴트 생성자' 라고 합니다. 그리고 이 디폴트 생성자는 사용자가 아무런 기능을 넣지 않으면 코드 실행시 자동으로 생성되어 컴파일을 진행하게 됩니다. 즉, 생성자를 코드상으로 표현하지 않아도 컴파일 과정에서 자동으로 디폴트 생성자가 생성되는 것입니다. 생성자는 주로 초.. 2019. 2. 20.
C++ public, protected, private에 대한 설명 public = 어디서든 접근이 가능. protected = 상속관계일 때 접근이 가능 private = 해당 클래스에서만 접근이 가능 #include using namespace std; class A { public: int num1; A() : num1(5), num2(6), num3(7) {} protected: int num2; private: int num3; }; int main(void) { A a; cout 2019. 2. 19.
c++ new의 사용법, malloc과의 차이(free, delete) ※컴퓨터의 메모리 구조를 알고 보시면 더 쉽게 이해할 수 있습니다. 메모리 구조 보러가기(클릭) 프로그램을 만들다 보면 상황에 따라 추가적인 메모리 공간을 실시간으로 확보해야 할 경우가 많습니다. 예를 들자면 채팅 대화방에 2명이 접속해 있는데 3명이 더 추가 접속을 했다거나 컴퓨터에 자료를 추가적으로 입력해 저장해야 하거나 등.... 여러가지 경우가 있습니다. 이것은 컴퓨터의 소프트웨어 사용시 변화가 유동적으로 일어나기 때문에 어찌보면 당연한 일이기도 합니다. 서론이 긴 이유는 제가 공부하고 배우면서 이 동적 메모리의 사용 이유를 제대로 파악하지 못한 채 배웠고 그로 인해 무엇이 중요한지도 제대로 모르고……. 답답한 느낌도 들고……. 무엇을 공부하거나 배울 때 목적이나 이유를 알고 지식을 습득하는 것이.. 2019. 1. 19.
객체, 인스턴스, 클래스 용어 정리!! ※클래스, 객체, 인스턴스, 인스턴스화는 분명 정의된 용어입니다. 얼추 보면 다 고만고만하고 비슷비슷해 보이지만 뜻하는 바는 다르다는걸 아시길 바랍니다!! 설명하기에 앞서 예시를 하나 보겠습니다. (직접 만들었습니다.....^^;;) 위 그림을 설명하자면.....;;; 쫄라맨이 과자를 만들 계획을 세우고 재료들을 구성하고 배합하여 과자를 만드는 과정입니다.!? 여기서 과자를 만들 계획을 세우고 어떤 재료가 들어갈지 틀을 구상하는 것이 클래스가 됩니다. 클래스를 기반으로 어떤 과자를 만들지 결정하는 단계를 객체라고 합니다. 어떤 과자(객체)를 만들지 결정했으면 그에 맞는 배합물을 넣고 섞어 완성품을 만들어내는 일련의 과정들을 인스턴스라고 합니다. 그리고 객체에서 인스턴스로 넘어가는 것을 가르켜 인스턴스화 .. 2019. 1. 17.
C++ 클래스 정의, 구조체와 차이점(접근제어 지시자) ※ 클래스를 알기전에 왜 클래스를 사용하는지 이유가 궁금하시면 객체지향 사용하는 이유(클릭)를 가보시기 바랍니다. C++에서 클래스와 비교되는 것이 구조체 입니다. 이 둘의 코드를 비교해 보겠습니다. 구조체 #include using namespace std; struct MyStruct { int num1; char arr[10]; void print(void) { cout 2019. 1. 17.
C와 C++의 차이, 절차지향과 객체지향의 차이점!!(객체지향 사용 이유) ※ 이 글은 C언어를 공부하신 후 읽으시는 것이 좀 더 이해가 빨리 될 것임을 알려드립니다. 또한 굳이 배우지 않았더라도 최대한 이해하기 쉽게 설명해 놓겠습니다. 이 둘의 차이점을 설명하기엔 너무나도 장문이 될 것 같으니 최대한 요약해서 설명해보겠습니다.! 우선 객체지향 언어를 사용한다는 가정하에 속도를 생각하시면 안됩니다. 객체지향 언어를 사용하는 이유(제가 생각하는 이유)는 다음과 같습니다. 1. 효율적인 분산 개발2. 그에 따른 각 개인의 포커싱으로 인한 질 좋은 코딩3. 서로간의 협력과 조율4. 완성 됐을 때의 유지보수 애초에 객체지향 언어는 프로그램 동작속도를 향상시키기 위해 개발된 언어가 아니라위 같이 여러명이 개발할 때 효율적인 코딩을 위해 만들어진 언어라고 생각했으면 좋겠습니다. 학교 수업.. 2019. 1. 17.
C++의 참조자 C++은 C언어와는 다르게 참조자 라는 기능이 있습니다. 이 글을 읽기 전에 '포인터' 라는 개념을 알고 넘어가야 합니다. 포인터를 모르신다면 포인터에 대한 글부터 읽고 넘어가시길 바랍니다. 포인터 보러가기~ 백문이 불여일견!! 예시부터 봅시다. #include using namespace std; void main() { int num1 = 10; int &num2 = num1; //참조자 선언 cout 2018. 6. 24.
C++의 자료형 bool C언어와는 다르게 C++에서는 bool이라는 자료형이 존재합니다. bool은 ture와 false를 나타내는 말로 참과 거짓을 표현합니다. C언어에서는 이것을 #define TRUE 1 #define FALSE 0 으로 자주 선언했을 것입니다. 간단한 예제를 통해서 알아보도록 합시다! #include using namespace std; void main() { if (true) { cout 2018. 6. 24.
C++의 namespace의 사용법과 이유(2) using 사용법 앞에서 namespace의 사용법을 설명했습니다. 복습하자면 사용법은 namespace IamA { void printOut() { std::cout 2018. 6. 24.
C++의 namespace의 사용법과 이유(1) C++에는 C에 없는 namespace라는 기능이 존재합니다. namespace라는 기능을 설명하기에 앞서 C++에 특지에 대해 이해하고 넘어갑시다!! C++은 객채지향 언어입니다. C언어는 절차지향 언어이지요. 이 둘을 나눈다면 크게 이렇게 나눌 수 있을겁니다. 그럼 객채지향 언어의 특징은 무엇이냐? 대표적으로 이식성이 좋다는 겁니다. 쉽게 말해서 '어느 잘 만들어진 프로그램' 의 함수와 기능들을 '다른 프로그램에 이용하고 싶을때' 함수충돌, 변수충돌 등의 문제들을 문제없이 사용할 수 있다는 점입니다. 그 이유는 클래스라는 개념과 namespace 덕분에 가능한데 자세한 설명을 나중에 작성하도록 하겠습니다. 여기서는 그냥 이렇다라고 읽으시고 넘어가시길 바랍니다. 그럼 namespace에 대해 설명하겠습.. 2018. 6. 24.
C++의 std, cout, cin, endl 사용법 C++에서는 C언어와는 다른 입출력을 사용합니다. C에서는 입력을 scanf(자료형, 변수), 출력을 printf("출력할 문자열 or 변수", 변수), 문자열 변경은 '\n' 이렇게 해더에 정의 되어 있는 해더파일에서 함수를 호출해 사용하게 됩니다. 하지만 C++에선 에 정의되어 있는 std::를 이용해서 입출력을 사용합니다. 입력은 std::cin>>"변수" , 출력을 std::cout val; std::cout 2018. 6. 24.
반응형

스킨편집 -> html 편집에서