본문 바로가기

IT124

CPP 초급 강좌 29. 맴버 초기화 리스트 member initializer lists CPP 초급 강좌 29. 맴버 초기화 리스트 member initializer lists 클래스의 맴버를 초기화하는 코드를 알아봅시다. 다음 코드를 볼까요. class Point { private: int x, y; public: Point(int a, int b) { x = a; y = b; } }; int main() { Point p(1, 2); } Point란 클래스를 만들고 인자로 x, y가 있습니다. 이 값은 main에서 객체를 생성할 때, p(1, 2); 코드로 인자 2개의 생성자를 호출하며 내부 값을 초기화시키죠. 하지만 위의 행위의 정확한 표현은 초기화가 아닙니다. 대입입니다. 생성자 호출 시 클래스 멤버에 대한 초기화 문법이 따로 존재합니다. 아래를 봅시다. Point(int a, in.. 2020. 11. 10.
CPP 초급 강좌 28. 생성자 constructor CPP 초급 강좌 28. 생성자 constructor 이전에도 생성자에 대해 보았지만, 조금 더 자세히 보겠습니다. 아래 소스를 봅시다. class Point { private: int x, y; public: Point() { x = y = 0; } Point(int x, int y) { this->x = x; this->y = y; } }; int main() { Point p1; Point p2(0, 0); } Point 클래스를 제작하고 생성자 인자 없는 버전과 인자가 둘인 버전을 제작하였습니다. 그리고 main 함수에서 둘을 호출하죠. 생성자 또한 오버로딩이 가능합니다. 위는 문제없는 코드입니다. 위의 코드에서 Point() { x = y = 0; } 생성자 코드를 제거한다고 가정하여 봅시다. .. 2020. 11. 9.
CPP 초급 강좌 27. 접근지정자, 캡슐화, friend 함수 CPP 초급 강좌 27. 접근지정자, 캡슐화, friend 함수 앞에서 접근 지정자에 대한 언급이 조금 있었다. 이번에는 관련 내용을 조금 더 알아보자. 코드를 봅시다. #include #include using namespace std; class UserInfo { public: string name = ""; int age = 0; }; int main() { UserInfo newUserInfo; newUserInfo.name = "신림83"; newUserInfo.age = 83; } 유저 정보를 저장하기 위한 클래스를 선언하고, 유저 정보를 입력해 봅니다. 큰 문제가 없습니다. 하지만 실수로, 다음과 같이 코딩하면 어떻게 될까요? newUserInfo.age = -83; 불가능한 일이 아닙니다.. 2020. 11. 6.
CPP 초급 강좌 26. 객체 와 객체지향 프로그래밍 이란? CPP 초급 강좌 26. 객체와 객체지향 프로그래밍 이란? cpp, c++ 하면 가장 먼저 많이들 하는 말이 오 그거 객체 지향 프로그래밍 언어,라고 많이들 들어보셨을 겁니다. 그러면 객체는 뭐고, 객체지향 프로그래밍은 또 뭘까요? 아래 코드를 좀 보죠. #include #include #include #include using namespace std; int main() { int i = 0; //a0 float f = 0; //b0 char c = 'a'; //c0 std::vector vector; //a1 std::stack stack; //b1 std::list list; //c1 vector.push_back(0); vector.push_back(1); vector.push_back(2); .. 2020. 11. 5.
CPP 초급 강좌 25. 객체지향 프로그램밍 클래스, 생성자, 소멸자, 파일분할, 클래스 탬플릿 CPP 초급 강좌 25. 객체지향 프로그램밍 클래스, 생성자, 소멸자, 파일 분할, 클래스 탬플릿 23강에서 본 지식을 기억하며, 간단한 스택 자료형을 struct로 구현해 보았다. #include using namespace std; struct Stack { private: int data[10]; int index; public : void init() { index = 0; } void push(int value) { data[index++] = value; } int pop() { return data[--index]; } }; int main() { Stack myStack; myStack.init(); myStack.push(10); cout 2020. 11. 4.
CPP 초급 강좌 24. 객체지향 프로그램밍 객체화, 접근 지정자 맛보기 CPP 초급 강좌 24. 객체지향 프로그램밍 객체화, 접근 지정자 맛보기 c++을 공부하시면서 객체, 객체지향 이런 용어를 참 많이 접하실 겁니다. C 스타일 코드를 C++ 객체지향 쪽 코드로 수정해 가보며 알아보아요. 특정 기간을 일로만 산출하는 코드 특정 기간에 대한 정보를 관리하려고 한다고 해보아요 아래 코드를 봅시다. #include using namespace std; int periodYear = 0; int periodMonth = 0; int periodDay = 0; int GetOnlyDay(int year, int month, int day) { return year * 365 + month * 30 + day; } int main() { int periodYear = 1; int p.. 2020. 11. 3.
CPP 초급 강좌 23. C++ 동적메모리 사용(new, delete, delete[]), nullptr CPP 초급 강좌 23. C++ 동적메모리 사용(new, delete, delete[]), nullptr 동적메모리 c++ 에서 동적 메모리를 사용하는 방법에 대해 봅시다. 먼저 c 에서의 메모리 할당 코드를 봅시다. 현제 c++에서도 사용할 수도 있는 코드입니다. int* p = (int*)malloc(sizeof(int) * 10); free(p); malloc로 할당하고, free 로 해지합니다. 해당 코드는 int * 10의 메모리 영역을 할당합니다. 40byte 기본적으로 malloc 는 void* 형이 반환타입입니다. 원하는 형식으로 다시 캐스팅(int*) 을 하여 사용하여야 합니다. c++ 프로젝트 에서도 아직 많이들 사용하고 있는 코드입니다. 필요할 경우도 분명 많구요. 그럼 이번에는 c+.. 2020. 11. 2.
애드센스 정책위반 행위들, 무효 트래픽, 노딱, 속임수 광고 애드센스 정책 위반 행위들, 무효 트래픽, 노딱, 속임수 광고 수익형 블로그를 꿈꾸시는 분들 중에 많은 분이 애드센스를 노리십니다. 저두 그랬고, 지금도 그러합니다. 애드센스라는 녀석이 나름 정책이 깐깐한 부분들이 있습니다. 이번 글에서는 그것을 살펴보려 합니다. 정책 위반을 했을 경우, 다양한 처벌이 존재하는데, 일단 어떤 처벌이 있는지부터 보고 갑시다. 1. 특정 페이지 광고 차단(사이트 문제) 특정 페이지에만 광고가 붙지 않는 케이스입니다. 나의 컨탠츠 송출에는 문제가 없지만, 해당 페이지에는 애드센스가 광고가 나오지 않게 됩니다. 이런 경우는 다른 컨탠츠에 영향이 없습니다. 해당 페이지만 광고, 자동 광고 모든 광고가 나오지 않게 됩니다. 해당 페이지만 포기하시면 큰 문제가 없다고 알고 있습니다... 2020. 11. 1.
CPP 초급 강좌 22. C++ Explict type conversion(casting) CPP 초급 강좌 22. C++ Explict type conversion(casting) c++ 에서의 명시적 형 변환에 대해 적어보겠습니다. 코드를 봅시다. int* p = malloc(sizeof(int) * 100); int* p에 인트 100개의 매모리 공간을 할당하는 코드입니다. 해당 코드는 정상 동적하지 않습니다. 왜냐하면 malloc 의 반환형이 void* 이기 때문이죠. c 스타일 코딩이라면 다음과 같이 처리할 수 있습니다. int* p = (int*)malloc(sizeof(int) * 100); 반환 타입인 void*를 int* 로 명시적으로 형변환을 하여 사용할 수 있습니다. 정상동작하고 문제없는 코드입니다. 이를 그대로 사용해도 되겠지만, c++에서는 이와 다른 명시적 형변환들을 .. 2020. 11. 1.
CPP 초급 강좌 21. C++ reference return, rvalue reference && CPP 초급 강좌 21. C++ reference return, rvalue reference && 이전 글에서 call by value, call by reference 에 대하여 (함수인자 사용을 통해) 살펴본 적이 있는데요, 관련링크 CPP 초급 강좌 19. C++ 레퍼런스 reference CPP 초급 강좌 19. C++ 레퍼런스 reference 레퍼런스에 대해 알아보겠습니다. C++에서 레퍼런스란 무엇인가를 알기 위해 기존의 변수 라는 표현이 뭔가를 정리해 볼까요? 변수 메모리의 특정 위치를 sillim83.tistory.com 이번에는 reference return 에 대해 보겠습니다. return by value 아래 코드를 볼까요. class Point { public: float x =.. 2020. 10. 31.
CPP 초급 강좌 20. C++ const reference CPP 초급 강좌 20. C++ const reference 아래 코드를 먼저 봅시다. class Point { public: float x = 0.0f; float y = 0.0f; }; void f(Point p) { } int main() { Point p; f(p); } Point 란 클래스를 정의하고 생성하고 f 함수에 인자로 넘기는 코드입니다. f(p) 에서 인자로 넘어가는 순간에 대한 이야기 입니다. f(point p) 함수 안에서 p는 call by value에 의한 호출입니다. 즉 객체는 복사되어 존재합니다. 내부에서 p의 맴버들에 대한 x,y에 대한 수정이 가능하지만 이 x,y 값은 main 함수에서 인자로 넣었던 p값에 영향이 없습니다. 코드를 보죠. void f(Point p) { .. 2020. 10. 30.
CPP 초급 강좌 19. C++ 레퍼런스 reference CPP 초급 강좌 19. C++ 레퍼런스 reference 레퍼런스에 대해 알아보겠습니다. C++에서 레퍼런스란 무엇인가를 알기 위해 기존의 변수 라는 표현이 뭔가를 정리해 볼까요? 변수 메모리의 특정 위치를 가르치는 이름입니다. 코딩시 해당 메모리에 접근하기 위한 용도로 사용을 합니다. 그럼 레퍼런스는? 기존 변수에 또 다른 이름을 부여하는 것이라고 보면 됩니다. 코드를 보겠습니다. #include using namespace std; int main() { int n = 0; n = 10; int& r = n; //레퍼런스의 선언 r = 20; cout 2020. 10. 29.