Programming/C++ STL2013. 2. 9. 19:19
학교에서 C++ 안하고
win32api랑 Java만 하고 졸업하고 MFC를 다뤄는 봤지만 C++을 생으로 해본적이 없어
저번달에는 Lisp 조금 해보고 이제 이번달에는 C++!ㅋㅋ

참조한 책은 Essential C++ (스탠리 B.립먼)

1. 책을 보다보니.. int a(0); 으로도 초기화가 된다고?!
#include <stdio.h>

void main()
{
        int a(0);
}

컴파일을 해보면 다른 소스라서 일단 제대로 되지 않으니 일단은 50%는 실패?
특이하게도 g++은 무조건 int main()으로 강제한다.

gcc test.c
test.c: In function ‘main’:
test.c:5:8: error: expected declaration specifiers or ‘...’ before numeric constant

g++ test.c
test.c:3:11: error: ‘::main’ must return ‘int’   
 
아래가 제대로 만든 c++ 소스. int a(0) 로도 초기화가 되는 신비함!!
(일단 a가 int형 객체일 경우 컨스트럭터로 인자를 하나 받아 초기화 해준다고 생각하면 간단하려나?)
#include <iostream>

int main()
{
        int a(0);

        return 0;
} 
 

2. cout 을 써봅시다 + long double 형?
c++에서는 .h를 제외하고 하는데 stdio 를 대체 하는 녀석은 바로 iostream!
#include <iostream>
//using namespace std;

int main()
{
        int a = 0;
        long double ld_t;

        cout << sizeof(ld_t) << '\n';

        return 0;
}

근데 cout이 안돼!!! 난 햄보칼수가 없엉 ㅠ.ㅠ

$ g++ test.c
test.c: In function ‘int main()’:
test.c:8:2: error: ‘cout’ was not declared in this scope
test.c:8:2: note: suggested alternative:
/usr/include/c++/4.6/iostream:62:18: note:   ‘std::cout’ 

cout의 경우에는 std::cout 으로 std에 포함된 cout 이기 때문에
굳이 저 소스로 하려면 std::cout << sizeof(ld_t) << '\n'; 으로 해야 한다.
그게 아니라면 간편하게 using namespace 를 이용해서 std를 기본으로 쓰도록 설정해준다. 

그리고 gcc 에서도 long double을 지원하기는 하는데.. 12byte 짜리(96bit ?!) 녀석이다. 

'Programming > C++ STL' 카테고리의 다른 글

Essential C++  (0) 2013.02.14
참조에 의한 전달(pass by reference)  (0) 2013.02.09
unsigned char -> int 변환 주의사항  (0) 2013.02.04
템플릿 메타프로그래밍  (0) 2013.01.06
c++ template  (0) 2012.05.12
Posted by 구차니