본문 바로가기

분류 전체보기

(21)
4항목 : 객체를 사용하기 전에 반드시 그 객체를 초기화 하자 name,age,phone 객체를 초기화 해보겠다 class test { private: string name; int age; string phone; public: test() {} test(const string& const _name, const int& _age, const string& const _phone) { name = _name; age = _age; phone = _phone; } }; 그런데 이런식으로 하면 초기화가 아니라 대입이라고 하더라 (처음알았다) 바로 밑의 방법이 초기화를 한것이라고 한다. 그리고 더욱 효율적인 코드이기도 하다. class test { private: string name; int age; string phone; public: test() {} test(..
3항목: 낌새만 보이면 const를 들이대 보자 char test[] = "hello" char *p = test; const char *p = test; //데이터만 변경불가능 char const *p = test; //주소만 변경 불가능 const char const *p = test; //둘 다 불가능 void print(const char* const a,const char* const b ) const { //이렇게도 사용하자 } using namespace std; vector vec; const vector::iterator iter= vec.begin(); //T* const 처럼 작동한다 주소는 변경을 못하지만 데이터는 수정이 가능하다 vector::const_iterator iter = vec.begin(); //const T* 처럼..
2항목 #define쓸려고할때 const, enum, inline을 떠올려라 매크로를 쓰면 매크로로 인해 에러가나면 그 에러를 찾기 힘들다. ex> #define TEST 1.653 이라고 정의했는데 에러가 나면 에러에는 TEST매크로는 안보이고 1.653이라는 상수만 떠버린다 그리고 매크로를 사용하면 그 매크로를 사용할때마다 사본을 많이만든다 const로 선언해서 사용하자 class안에서는 static을 사용하면 메모리를 아낄수있다. class test{ static const int _test = 5 } ; 요런식으로 값을 변경하는것과 어느 변수의 주소를 참조하는것 조차 거부하고싶으면 enum을 사용하면된다. *이것만은 잊지 말자 단순한 상수를 쓸 때는, #define보다 const 객체 혹은 enum을 우선 생각합시다. 함수처럼 쓰이는 매크로를 만ㄴ들려면 #define매크로..
매개변수 반환값 지정 https://docs.microsoft.com/ko-kr/visualstudio/code-quality/annotating-function-parameters-and-return-values?view=vs-2019
WinPcap 패킷캡쳐(임시) 귀찮아서 tcp만 했음 #include #include #include #include #include #pragma comment(lib,"ws2_32.lib") #pragma comment(lib,"wpcap.lib") #define WEB "tcp" typedef struct ether_addr { unsigned char e_host[6]; }ETHER_ADDR; typedef struct ethernet_header { ETHER_ADDR src; ETHER_ADDR dst; unsigned short type; }ETHERNET_HEADER; //ip_header typedef struct ip_header { unsigned char header_len : 4; unsigned char ve..