본문 바로가기
반응형

기술자료/C C++30

함수 호출 연산자 () 오버로딩 Function Call Operator () Overloading in C++ c++은 객체 이름만으로 호출가능한 함수를 만들 수 있으며 이와 관련된 호출방법을 지원한다. 이 방법을 사용하기 위해서 준비된 키워드가 operator ()이다. 객체 이름의 함수를 클래스 정의시 바로 적시할 수 없으므로 이런 키워드가 고안된 듯 하다. 아래에 관련 사례에 대해 소스를 작성해 보았다. 관련해서 방문자들에게 도움이 되길 바란다. #include using namespace std; class wowcat { public: // 정의 방법1 int operator() (int iArg1, int iArg2) { int iNum = iArg1 + iArg2; return iNum; } // 정의 방법2 int operator() (int, int, int); }; // 정의 방법2 int wo.. 2020. 1. 26.
개인 프로젝트용 파일 (연습문제/도서관리/원라인) 2013. 4. 4.
링커 스크립트 링커 스크립트 Every link is controlled by a linker script. This script is written in the linker command language. 모든 링크 과정은 링커 스크립트가 조정한다. 이 스크립트는 링커 명령 언어로 쓰여진다. The main purpose of the linker script is to describe how the sections in the input files should be mapped into the output file, and to control the memory layout of the output file. Most linker scripts do nothing more than this. However, when.. 2009. 9. 11.
Pcap 함수 파라미터 1. typedef void(*? pcap_handler )(u_char *user, const struct pcap_pkthdr *pkt_header, const u_char *pkt_data) [ 기능 ] 패킷을 받는 콜백 함수의 프로토타입 [ 파라미터 ] u_char *user : pcap_dispatch()나 pcap_loop()를 호출할 때 전달하는 u_char 포인터 const struct pcap_pkthdr *pkt_header : 패킷의 정보를 기지고 있는 pcap_pkthdr 구조체 const u_char *pkt_data : 패킷의 데이터를 가리키고 있는 u_char 포인터 ? 2. pcap_t *pcap_open_live (char *device, int snaplen, int pr.. 2009. 8. 24.
[賢彬] C로 C++/C#/JAVA처럼 OOP를 할 수 있나요? C++/자바/C#과 달리 C는 언어 차원에서 OOP 기능을 제공하지 않기 때문에 OOP를 구현하려면 상당한 애로 사항이 있다. 하지만 실제로는 여러 가지 테크닉과 꼼수를 동원해서 C로도 OOP를 많이 하고 있다. 문제는 "할 수 있는" 것과 "하기 편한" 것 사이의 넘을 수 없는 4차원의 벽인데...오늘은 같은 프로그램을 C로 짠 것과 C#으로 짠 것을 비교해 보면서 그 벽을 느껴보도록 하자. :-) 살펴볼 것은 오픈 소스계에서 가장 유명한 GUI 툴킷 중 하나인 GTK+이다. GTK+은 기본 코드가 C로 작성되어 있고, 바인딩이라고 해서 GTK+를 다른 언어에서 쓸 수 있도록 이음새 역할을 하는 라이브러리가 C++/자바/C#/파이썬 등의 주요 언어별로 하나씩 제공된다. C로 만들었음에도 불구하고 OOP.. 2009. 8. 20.
[클란심] 문자열 대치 프로그램 strtok로 문자열을 단어단위로 tokenize 한뒤 단어를 바꾸는 식으로 짜봤음 문자열이 공백으로 단어가 구별 되있지 않다면 바꿔주지 않음 과제 의도와는 짜보고보니 조금 다른듯하지만 strtok() 함수에 대해 알게되어서 함 올려봄 #include #include char * change_word(char *string, char *old_word, char *new_word); int main() { char string[30]; char old_word[10]; char new_word[10]; printf("Input string: "); fgets(string, sizeof(string), stdin); printf("Input old word: "); scanf("%s", old_word);.. 2009. 8. 17.
과제 - C - 문자열 대치 프로그램 임의의 문자열을 키보드로부터 입력받아 문자열 중 일정한 부분을 다른 문자열로 대치하는 프로그램을 함수 char * change_word(char *string, char *old_word, char *new_word); 를 이용하여 작성하라. 함수 change_word()에서 string은 입력받은 문장을 위한 인수이고, old_word은 대치될 문자열을 위한 인수이며, new_word는 대치할 문자열을 위한 인수이다. 단 string은 30자 이내, new_word와 old_word는 10자 이내이며 new_word와 old_word의 실제 입력 자리수는 같아야 한다. 2009. 8. 14.
[賢斌] vector<벡터> - 4 40-1-라.사용자 정의 요소 벡터는 타입을 받아 들이는 클래스 템플릿이므로 임의의 모든 타입을 요소로 가질 수 있다. 지금까지는 예제 제작의 편의를 위해 주로 정수형의 벡터만 만들어 보았지만 클래스 객체를 요소로 가지는 벡터도 얼마든지 만들 수 있다. 다음 예제는 Time 객체의 벡터를 만든다. 예 제 : Timevector #include #include using namespace std; class Time { protected: int hour,min,sec; public: Time(int h,int m,int s) { hour=h;min=m;sec=s; } void OutTime() { printf("%d:%d:%d ",hour,min,sec); } }; template void dump(co.. 2009. 8. 13.
[賢斌] vector<벡터> - 3 40-1-다.연산자 벡터에는 상식적으로 필요하다고 생각되는 대부분의 연산자들이 정의되어 있어 간단한 동작은 연산자만으로도 처리할 수 있다. C++의 연산자 오버로딩 기능을 아주 적절히 잘 활용하고 있는데 벡터뿐만 아니라 STL 컨테이너들은 모두 비슷한 방식으로 연산자를 오버로딩한다. 대입 벡터끼리 대입할 때는 간단하게 = 연산자를 사용하면 된다. 대입을 받는 좌변 벡터는 우변 벡터의 크기만큼 자동으로 크기가 늘어날 것이며 우변의 모든 요소가 좌변으로 대입된다. 벡터의 요소가 객체인 경우 개별 객체의 대입 연산자를 호출하여 깊은 복사를 하므로 요소들도 완전한 사본으로 생성될 것이다. 우변의 모든 요소가 좌변으로 복사되어 두 벡터가 완전히 같아지며 메모리 관리, 요소 개수 관리 등의 모든 처리는 대입 연산자.. 2009. 8. 13.
728x90
반응형