OSI 7계층1layer : physical2layer : datalink3layer : network4layer : transport5layer : session6layer : presentation7layer : application 물리 계층 : 물리 매체를 통하여 비트 스트림을 전달하는데 필요한 기능들을 조정데이터링크 계층 : 물리 계층의 있는 그대로의 전송 설비를 신뢰할 수 있는 링크로 변환네트워크 계층 : 다중 네트워크를 통하여 전달되는 발신지 대 목적지 전달을 책임전송 계층 : 전체 메시지의 프로세스 대 프로세스 전달을 책임세션 계층 : 네트워크 대화 제어기, 토신 시스템 간에 상호대화를 설정하고, 유지하고, 동기화표현 계층 : 두 시스템 간에 교환되는 정보의 구문과 의미와 관련응용 계층 :..
All
1. 역사네트워크 : 컴퓨터나 프린터와 같은 통신하는 장치들을 서로 연결한 그룹게이트웨이(gateway) : 하나의 네트워크로부터 다른 네트워크로 패킷을 전송하는 중계 하드웨어 역할2. 인터넷 표준제안 표준 : 인터넷 공동체를 통하여 만은 노력과 충분한 논의를 거친 안정된 규격드래프트 표준 : 적어도 2번의 독자적인 성공과 상호 운용성이 이루어져야 함인터넷 표준 : 드래프트 표준에서 구현이 온전하게 이루어졌을때의 표준기록 단계 : 최종 규격에 의해 대치 되었거나 인터넷 표준이 되기 위해 필요한 단계를 통과하지 못한 것실험 단계 : 인터넷 운영에는 영향을 주지 않고 실험적인 상황과 관련된 작업정보제공 : 인터넷과 관련된 일반적이면서 역사적인 튜토리얼 정보
class TimeKeeper { public: TimeKeeper(); ~TimeKeeper(); }; class AtomicClock: public TimeKeepeer {}; class WaterClock: public TimeKeeper {}; class WristWatch: public TimeKeeper {}; 시간 접근자에 접근을 하려고 함 TimeKeeper* getTimeKeeper(); //TimeKeeper에서 파생된 클래스를 통해 동적으로 할당된 객체의 포인터를 반환 기본 클래스의 소멸자로 인해 클래스가 삭제가 되면 파생 클래스는 소멸되기 때문에 객체의 신세로 바뀌게 된다. 따라서 에러가 발생될 수 있음 이를 해결하기 위해서는 virtual을 포함하여 가상 소멸자를 만들면 이를 해결..
HomeForSale h1; HomeForSale h2; HomeForSale h3(h1); //h1을 봉사하려 합니다 컴파일 되면 안된다 h1 = h2; // h2를 복사하려 합ㄴ다 컴파일 되면 안된다 class Uncopyable { protected: // 파생된 객체에 대해서 Uncopyable() {} //생성과 소멸을 ~Uncopyable() {} //허용합니다 private: Uncoptable(const Uncopyable&); // 하지만 복사는 방지합니다. Uncopyable& operator = { const Uncopyable&); }; class HomeForeSale: private Uncopyable { // 복사 생성자도, ... //복사 대입 연산자도 }; //이제는 선언되..
클래스가 비어 있지만 비어 있지 않은 경우가 존재한다. c++에서 빈 클래스를 지나갈 때가 이런 경우 중에 하나 이다. 클래스 안에 직접 선언하지 않더라도 선언되는 것 1. 복사 생성자 2. 복사 대입 연산자 3. 소멸자 class Empty { public: Empty() {... } //기본 생성자 Empty(const Empty& hrs) { } //복사 생성자 ~Empty() { } //소멸자 Empty& operator=(const Empty&rhs){ } // 복사 대입 연산자 }
int x; 초기화를 하지 않으면 이 x의 값이 어떤 값인지 알 수 없다 stl의 벡터 부분의 경우 반드시 초기화가 보장이 된다 int x = 0; //int의 직접 초기화 const char * text = "A C-style string"; //포인터의 직접 초기화 double d; //입력 스트림에서 읽음으로써 초기화 수행 class PhoneNumber{...}; class ABEntry { //ABEntry = "Address Book Entry" public: ABEntry(const std::string&name, const std::string& address, const std::list& phones); private: std::string theName; std::string theA..
const가 붙으면 외부에서 이 코드를 분가능하게 하여 값이 불변하게 한다. char greeting[] = "Hello"; char *p = greeting; //비상수 포인터, 비상수 데이터 const char *p = greeting; //비상수 포인터, 상수 데이터 char * const p = greeting; //상수 데이터, 비상구 데이터 const char * const p = greeting; //상수 포인터, 상수 데이터 void f1(const widget *pw); //f1은 상수 widget 객체에 대한 포인터를 매개 변수로 취함 void f2(Widget const *pw); // f1과 같은 방식으로 매개변수로 취함 std::vector vec; const std::vector..
선행 처리자보다 컴파일러를 더 가까이 하자#define ASPECT_RATIO 1.653컴파일러가 기호식 이름을 밀어버리고 선행처리자가 숫자 상수로 바꾸어 버림#define을 사용하지 않고 상수로 교체할 때에는 const를 두번 붙이는 경우가 발생할 수 있음매크로 대신에 상수를 사용하여 형변환 에러를 해결어떤 상수의 범위를 클래스로 한정하고자 할 때는 그 상수를 멤버로 만들어야 한다. static 변수 class GamePlayer { private: static const int NumTurns = 5; //상수 선언 int scores[NumTurns]; //상수를 사용하는 부분 }; 헤더 파일에는 클래스 상수의 정의를 두지 않는다. 클래스 상술ㄹ #define으로 정의하지 날 것 class Cost..
초창기의 c++은 단순히 c 언어에 객체 지햐 기능 몇 가지가 결합된 형태오늘날의 c++은 다중패러다임 프로그래밍 언어로 절차적 프로그래밍을 기본으로 하여 객체 지향, 함수식, 일반화 프로그래밍을 포함하며 메타프로그래밍 개념까지 지원.c : c++은 c를 기본으로 하고 있음, 블록, 문장, 선행 처리자, 기본제공 데이터타입, 배열, 포인터 등의 개념 모두 활용객체 지향 개념의 c++ : 클래스, 캡슐화, 상속, 다형성, 가상함수 등 사용템플릿 c++ : c++의 일반화 트로그래밍, 새로운 프로그래밍 패러다임이 파생stl : 템플릿 라이브러리, 컨테이너, 반복자, 알고리즘, 함수 객체 등 포함 결국 C++은 하위 언어들의 연합체
Effective C++ : C++을 효과적으로 사용하기 위한 방법항목(item) : 프로그램과 설계를 더욱 쓸 만하게 뽑을 수 있는 방법선언(declaration) : 코드에 사용되는 '어떤 대상'의 이름과 타이블 컴파일러에게 알려 주는 것Signature : 함수의 매개변수 리스트와 반환 타입정의(definaition) : 선언에서 빠진 구체적인 세부사항을 컴파일러에게 제공하는 것초기화(initialization) : 어떤 객체에 최초의 값을 부여하는 과정default constructor : 어떤 인자도 주어지지 않은 채로 호출될 수 있는 생성자explicit 생성자의 경우 암시적 타입 형 변환을 막는다.copy constructor : 어떤 객체의 초기화를 위해 그와 같은 타입의 객체로부터 초기화..