목록𝐏𝐑𝐎𝐆𝐑𝐀𝐌𝐌𝐈𝐍𝐆 (80)
도순씨의 코딩일지
🌼 정의와 역사 인터넷은 웹과 동일할까요? 먼저 대답을 해보자면 'No'입니다. WWW는 인터넷의 일부일 뿐입니다. 회선 교환(circuit switching) 은 두 사람 사이에 실제적인 물리적 연결을 만들고 회선을 독점하는 방식입니다. 목적지로 전송하기 전에 먼저 회선을 정하고 그 회선을 통하여 통신을 하는 방식이죠. 회선 교환의 단점은 다음과 같습니다. 💡 통신 전에 회선을 정립하고, 통신중에도 유지해야 한다 💡 동시에 회선을 사용하는 것이 어렵다 💡 링크 설정과 동시에 대화가 성립된다고 가정하기 때문에 대역을 낭비한다 ARPANET 은 회선 교환을 사용하지 않고 패킷 스위칭(packet switching) 을 사용했습니다. 패킷 스위치 네트워크는 지속적인 연결을 요구하지 않습니다. 그 대신에 메시..
🌼 C++의 예외처리 : try, catch, throw 💡 try : 예외를 발견한다 💡 catch : 예외를 잡는다 💡 throw : 예외를 던진다 위 설명을 더 자세하게 살펴보도록 합시다. try 블록은 예외발생에 대한 검사의 범위를 지정합니다. try 블록에서 예외가 발생하면 catch 부분으로 넘어가 예외를 처리합니다. 키워드 throw는 예외가 발생했음을 알립니다. throw에 의해서 던져진 '예외 데이터'는 try 블록에 의해서 감지가 되고 catch 블록에 의해서 처리됩니다. 예제를 한 번 살펴봅시다. ⭐️ HandlingExceptionTryCatch.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #include using name..
🌼 Point 클래스 템플릿과 배열 클래스 템플릿 다음과 같은 형태는 생소하지만 템플릿 클래스의 객체를 저장할 수 있습니다. 1 BoundCheckArray oarr(50); cs 만약 저장대상이 Point 템플릿 클래스 객체가 아닌 Point형 포인터라면 다음과 같이 표현 가능합니다. 1 BoundCheckArray oparr(50); cs 예제를 통해서 직접 살펴봅시다. ⭐️ PointTemplate.h 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #ifndef __POINT_TEMPLATE_H_ #define __POINT_TEMPLATE_H_ template class Point{ private: T xpos, ypos; public: Po..
🌼 함수를 대상으로 템플릿 이해하기 함수 템플릿은 함수를 만들어내는 역할을 합니다. 함수의 기능은 결정되어 있지만, 자료형은 결정되어 있지 않습니다. 그러므로 자료형을 결정해주어야 합니다. 다시 한 번 말하자면 함수 템플릿은 함수를 만드는 도구입니다. 자바의 제네릭과 유사하죠. 예시를 통해서 함수 템플릿을 이해해봅시다. 1 2 3 int Add(int num1, int num2){ return num1 + num2; } cs 위 함수의 정보를 요약해보면 다음과 같습니다. 💡 함수의 기능 : 덧셈 💡 대상 자료형 : int형 데이터 이러한 함수를 만들어낼 수 있는 템플릿은 다음과 같이 정의됩니다. 1 2 3 T Add(T num1, T num2){ return num1 + num2; } cs 위 함수의 정..
🌼 디폴트 대입 연산자 대입 연산자의 대표적인 특성은 다음과 같습니다. 💡 정의하지 않으면 디폴트 대입 연산자가 삽입된다. 💡 디폴트 대입 연산자는 멤버 대 멤버의 복사(얕은 복사)를 진행한다. 💡 정의하지 않으면 디폴트 대입 연산자가 삽입된다. pos2 = pos1은 멤버함수방식의 오버로딩을 기준으로 다음의 형태로 해석됨을 알 수 있습니다. 1 pos2.operator = (pos1); cs ⭐️ FirstOperationOverloading.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 #include using..
🌼 operator+ ❓ ⭐️FirstOperationOverloading.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 #include using namespace std; class Point{ private: int xpos, ypos; public: Point(int x = 0 , int y = 0) : xpos(x), ypos(y) {} void ShowPosition() const{ cout
먼저 단순한 코드를 하나 살펴보도록 하겠습니다. 🌼 멤버함수의 위치 ⭐️RealObjUnder1.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include using namespace std; class Data{ private: int data; public: Data(int num) : data(num) {} void ShowData() { cout
🌼 객체 포인터 변수 : 객체의 주소 값을 저장하는 포인터 변수 C++에서는 클래스를 기반으로도 포인터 변수를 선언할 수 있습니다. Person 객체의 주소 값 저장을 위해서 다음과 같은 포인터 변수를 선언할 수 있습니다. 1 2 Person * ptr; // 포인터 변수 선언 ptr = new Person() // 포인터 변수의 객체 참조 cs Person형 포인터는 Person 객체 뿐만 아니라, Person을 상속하는 유도 클래스의 객체도 가리킬 수 있습니다. 다음 코드를 살펴봅시다. 1 2 3 class Student : public Person{ .... }; cs class Student가 Person 클래스를 상속하고 있습니다. 1 Person * ptr = new Student(); cs ..