소프트웨어/c++

    [c++] snprintf, sprintf 예제

    sprintf는 문장, 혹은 하나의 버퍼를 타겟 버퍼에 그대로 복사를 하는 것이고, snprint는 크기를 정한 후 복사하는 것이다. #include #include int main(int argc, char* argv[]) { /* sprintf example */ char buf[256]; int len; int i; len = sprintf(buf, "Hello,\n"); for (i=0;i

    2차배열 동적 할당, 교환하기 등.

    아래 블로그를 참조하였습니다.http://gshan85.tistory.com/34 요약 : 2차 배열로 생성하고, 1차 배열을 덮어 씌우는데, 그 1차배열은 할당, 삭제가 가능하다. #include #include using namespace std; void swap( char **tmp ) { for( int i=0;i

    c++ / 7. POD를 아십니까?

    c++ / 7. POD를 아십니까?( 데이터 구조, Plain old data structure ) 일을 하다가 알게된 개념으로 Array를 POD와 Non POD로 만들어진 2개의 사이에서 삽질을 하다가 알게된 개념입니다. POD 또는 PODS. 이 개념은 C언어의 Struct나 built-in-type과 동일한 메모리 구조를 갖는 object를 의미합니다.즉 memset이나 memcpy와 같은 단순 메모리 복사가 가능한 것인데 여기서 C++의 클래스와 다른 부분입니다. POD의 조건은 다음과 같습니다.1. built-in-type2. 가상 함수가 없고 사용자 정의 할당자와 소멸자를 갖지 않은 class의 object3. non POD를 non-static 멤버로 가지지 않은 class의 object ..

    c++ / 6. 복사 생성사란. (+ 대입 연산자 오버로딩)

    c++ / 6. 복사 생성사란. (+ 대입 연산자 오버로딩)(Copy constructor, substitution operator) (글 마지막 부분에서 고쳐지게 되어 미리 공지합니다.글 초반에 나오는 복사 생성자라는 함수는 여러 종류로 나타날 수 있으며 보통의 경우는 맨 마지막 코드와 같이 표현이 됩니다.) 필자는 복사 생성자를 간과하고 있었습니다. 그러다가 복사 생성자의 무서움(?)을 얼마전에 알게되어서 책을 보고 다시 공부를 했습니다. 복사 생성자란 생성되는 객체에 이미 생성된 객체의 값을 복사하는 역활을 수행합니다. 이 부분이 필요한 것은 값이 할당되어 있는 클래스 변수간의 할당에 사용되고,응용으로는 call by value와 call by reference의 차이를 이해하는 것이 있습니다.당장..

    c++ / 5. template를 사용해서 array만들기. - 1탄

    c++ / 5. template를 사용해서 array만들기. - 1탄 template는 학부때, 혹은 c++의 책에 맨 마지막에 자리하게 되어서 잘 보지 않는 부분입니다.그래서 회사에서 template로 된 소스를 이용해서 구현하는데 애좀 먹었죠... 그래서 준비했습니다.template와 친해지기 바래 - template로 array만들기편 우선, array라 함은 메모리 동적할당이 일어나야 하니깐 memset이나 malloc을 resize하는 함수들과 친해져야합니다. 모르는 것이 나왔으니~ 검색!terminal에서 man으로 검색해보니 아래와 같이 나옵니다. MEMSET(3) Linux Programmer's Manual MEMSET(3)NAME memset - fill memory with a con..

    c++ / 4. inner struct, 클래스 속에 struct를 생성한 후 struct를 통해 값 전달하기

    c++ / 4. inner struct, 클래스 속에 struct를 생성한 후 struct를 통해 값 전달하기 하나의 클래스 속에 struct를 만든 후, 다른 클래스에서 struct의 값을 호출해서 사용할 일이 생겼다. 그래서 테스트해봤다. 과연 struct는 public인가? private인가? 그리고 이게 어떻게 동작이 될까?! 매우 기초적인 궁금증일것 같은데, 난 기초가 없는듯 하다. 그래서 직접 작성해봤다. #include using namespace std; class A { private: struct testStruct { int data; }; public: struct testStruct *root; A() { root = NULL; create(); } ~A() { if( root )..

    c++ / 3. 집합 관계 ( on composition & aggregation )

    c++ / 3. 집합 관계 ( on composition & aggregation )

    c++ / 3. 의미 관계 in 집합 관계 ( Aggregation classes ) 사건의 발달은 UML을 그릴때였다...속이 꽉~찬 마름모, 속이 텅~빈 마름모.이 두개가 혼돈의 도가니로 나를 이끌었다. 그래서 알아봤다.집합관계에 대해서. 집합관계의 유형은 2가지로 나뉠 수 있다.포함 관계와 집합 관계( composition & aggregation ) 두개의 비교를 해보자면, 표현법은 아래와 같다. 오른쪽의 꽉찬 마름모는 포함 관계이고,왼쪽의 빈 마름모는 집합 관계이다. 두개의 의미로는포함 관계, 부분 객체는 전체 객체에 전속되는 것이고집합 관계, 부분 객체는 여러 전체 객체에 의해서 공유될 수 잇는 것.이다. 예시는 아래와 같다.쓰이는 방식 등에 따라서 어떠한 집합인지 결정이 되고, UML표현도 ..

    c++ / 2.오파큐 타입이란 ( What does the term “opaque type"? )

    c++ / 2.오파큐 타입이란 ( What does the term “opaque type"? ) c++을 공부하다 보면 '오파큐 타입'이란 용어가 나올 것이다. 오파큐(opaque)란 사전적인 의미는 a. 불투명한, 빛을 통과시키지 않는 n.불투명체, [the ~]암흑정도의 뜻이 존재한다. 하지만 c++에선 무엇을 opaque라고 할까? 참고할만한 대답은 stack overflow에서 찾았다. "opaqueType"은 struct나 class를 완전히 정의하지 않은 상태로 갖고있는 타입을 의미한다.C, C++, Object-C에서 컴파일러에게 나중에 정의하겠다고 전방선언(forward declaration)을 사용해서 말 할 수 있는 것이다. // forward declaration of struct ..