C++

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

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

    c++ / 6. memcpy에 대해서 실험해봤습니다.

    c++ / 6. memcpy에 대해서 실험해봤습니다. memcpy나 mem의 함수에 대해서 많이 모르기 때문에 설명서를 읽고 실습을 해보기록 했습니다. memcpy는 복사를 하는 함수인데, 단순히 드는 궁금증. 복사를 할 때 크기가 서로 다르거나 하면 어떻게 되지??그래서 바로 vim을 열고 테스트 코드를 작성해봤습니다. 총 테스트는 2가지입니다.기본 구조는 int 1개, int array1개이고, 첫번째 실험은 int에 값을 준 후, array에 한번은 부족하게, 다른 한번은 넉넉하게 값을 준 경우입니다.두번째 실험은 array에 값을 가득 채운 후, int에 값을 주는 경우입니다.( 값이 채워지는 것을 보기 위해서 초기화는 1로 했습니다.) #include #include using namespace..

    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 ..

    [c++] template <typename T>에 대해서

    1. 키워드c++, c, template, typename,T,템플릿, 2. 설명template parameter의 멤버를 사용하고 싶은 경우 typename을 써야한다. 그렇지 않으면 정적멤버로 오해한다.(http://prorepo.tistory.com/164) 이건 무슨 소리일까? 뭐, 됐고, 일단 코드로 놀아보자. 3.이정도가 되면 그냥 이런 문법은 써도 된다는거겠지. #include template class Test { public: T m_store; void setStore(T store) { m_store = store; } T getStore() { return m_store; } }; int main() { int a; int *pa; a = 5; pa = &a; Test pInt; T..

    [c++] warning / suggest parentheses around assignment used as truth value [-Wparentheses]

    suggest parentheses around assignment used as truth value [-Wparentheses] 이건 truth값이 명확하지 않다는 말이다. 코드를 보고 설명하자면, if( list = list->next ) // 이렇게 하면 =인지 ==인지, list인지 list->next인지 모호함으로, if( (list = list->next) ) 이렇게 표현하면 경고 표시가 사라지게 된다.