반응형

void  포인터는 클래스 템플릿처럼 자료형을 미리 지정하지 않고 나주엥 원하는 형태로 자유롭게 변환할 수 잇는 유용한 기능을 제공한다.

고급 개발자들이 추상화들이 추상화르 ㄹ구현하 ㄹ때 자쥬 사용하는 패턴이다.

 

int value = 100;

double value2 = 100.121;

void *voidPointer = &value;

voidPointer = &value2;

 

void 포인터형으로 선언한 voidPointer 변수는 특정 자료형으로 지정하지 않았으므로 int형이든 double형이든 할당 할 수 있다.

물론 실제 코드에서 이렇게 바로 자료형을 변경하는 경우는 없지만, 예로서는 충분하다.

728x90
반응형
LIST

'IT개발/정보 > Modern C++' 카테고리의 다른 글

decltype형  (0) 2021.12.26
auto형 변수  (0) 2021.12.26
특수 문자표  (0) 2021.12.26
C++11 표준 기본 자료형  (0) 2021.12.26
간단한 파일 입출력  (0) 2021.12.26
반응형

앞장에서 auto형 변수에 대해 알아보았다. auto형 변수는 컴파일러가 알아서 자료형을 결정해주지만 초기값을 반드시 설정해야만 했다.

하지만 decltype형을 사용한다면 초기값을 설정해주지 않아도 된다. decltype형은 auto형과 같이 C++11 표준부터 지원한다.

 

decltype형은 아리와 같이 선언한다.

 

① decltype( 함수f() ) [선언할 변수];
② decltype( 변수 ) [선언할 변수];
③ decltype( (변수) ) [선언할 변수]; 

 

 

 

[decltype 예제 ]

 

int f()
{
return 10 + 20;



int main()
{
double d = 1.234;
decltype(f()) answer1;                            // ①
decltype(d) answer2;                             // ②
decltype((d)) answer3 = answer2;           // ③
}

 

 

① answer1 변수는 f() 함수의 반환형인 int형

② answer2 변수는 d 변수의 자료형인 double형

③ answer3 변수는 double&형

728x90
반응형
LIST

'IT개발/정보 > Modern C++' 카테고리의 다른 글

void 포인터  (0) 2021.12.26
auto형 변수  (0) 2021.12.26
특수 문자표  (0) 2021.12.26
C++11 표준 기본 자료형  (0) 2021.12.26
간단한 파일 입출력  (0) 2021.12.26
반응형

지금까지 변수를 선언할 때에는 사용하려는 변수의 자료형을 미리 지정해야 했지만 C++11 새로운 표준부터는 컴파일러가 자동으로 자료형을 결정하는 auto라는 키워드를 제공한다.

단, 컴파일러가 초기값을 보고 자료형을 결정하기 때문에 반드시 아래와 같이 변수 초기화 코드가 있어야 한다.

 

 auto 변수명 = 초기값(상수, 변수, 함수 모두 가능);

 

 

[auto형 변수를 선언하는 예제]

 {
int n = 2; 
float f = 2.3; 
auto answer1 = n;  // ①
auto answer2 = f;  // ②
auto answer3 = n + f;  // ③
}

 

 

① 변수 n의 자료형이 int이므로 answer1은 int형이다.

② 변수 f의 자료형이 float이므로 answer2은 float형이다.

③ answer3는 변수 n과 f의 합이 float형이 되므로 answer3의 자료형은 float형이 된다.

728x90
반응형
LIST

'IT개발/정보 > Modern C++' 카테고리의 다른 글

void 포인터  (0) 2021.12.26
decltype형  (0) 2021.12.26
특수 문자표  (0) 2021.12.26
C++11 표준 기본 자료형  (0) 2021.12.26
간단한 파일 입출력  (0) 2021.12.26
반응형
 특수문자 의미  설명 
 \n newline  커서를 다음 줄로 이동 
 \t horizontal tab  커서를 미리 정해진 수만큼 가로로 이동 
 \a alert  경고음 울림 
 \v vertical tab  커서를 미리 정해진 수만큼 아래로 이동 
 \b backspace  커서를 뒤로 한 칸 이동 
 \"" double quote  큰따옴표 표시 
 \\ backslash  백슬래시 표시
 \? question mark  물음표 표시 
 \' single quote  작은따옴표 표시 
 \r carriage return  커서를 현재 줄의 맨 앞으로 이동 
 \f form feed  커서를 다음 페이지의 첫 줄로 이동 

 

 

728x90
반응형
LIST

'IT개발/정보 > Modern C++' 카테고리의 다른 글

decltype형  (0) 2021.12.26
auto형 변수  (0) 2021.12.26
C++11 표준 기본 자료형  (0) 2021.12.26
간단한 파일 입출력  (0) 2021.12.26
Modern C++ 이란?  (0) 2021.12.26
반응형

 

 구분 자료형  의미  최소 크기 
 산술형


















 short  짧은 정수(short integer)   16bit
 int  정수(integer)  16bit
 long  긴 정수(long integer)  32bit
 long long  긴 정수(long integer)  64bit
 float


 단정도 부동소수점
 (single_precision floating point)
 32bit
 double


 배정도 부동소수점
 (double-precision floating point) 
 64bit
 long double


 특수정도 부동소수점
 (extended precision floating point)
 64bit
 bool  논리(boolean)  참(true) 또는 거짓(false)
 문자형








 char  문자(character)  8bit
 wchar_t  확장 문자(wide character)  16bit
 char16_t  유니코드 문자(unicode character)  16bit
 char32_t  유니코드 문자(unicode character)  32bit

 

728x90
반응형
LIST

'IT개발/정보 > Modern C++' 카테고리의 다른 글

decltype형  (0) 2021.12.26
auto형 변수  (0) 2021.12.26
특수 문자표  (0) 2021.12.26
간단한 파일 입출력  (0) 2021.12.26
Modern C++ 이란?  (0) 2021.12.26
반응형

[파일입출력 예제]

#include <iostream>
#include <fstream>
#include <string>


using namespace std;


int main()
{
string str = "파일입출력";


// 파일 입력
ofstream ofs("file.txt"); // file.txt에 파일을 연다.
if( ofs.is_open() ) // file이 잘 열렸는지 확인
{
ofs << str; // file.txt 파일에 str 문자열을 쓴다.
}
ofs.close(); // 파일을 단는다.


// 파일 출력
ifstream ifs("file.txt"); // file.txt 파일을 다시 연다.
if( ifs.is_open() )
{
ifs >> str; // 파일의 내용을 str에 저장한다.
cout << str << endl; // 파일로부터 읽은 내용을 모니터 화면에 출력한다.
}
ifs.close(); // 파일을 닫는다.
}

 

 

[fstream 클래스의 주요 멤버 함수와 기능]

 멤버 함수 기능 설명 비고 
 open(파일명)
 open(파일명, 파일모드)

파일명지정
파일명과 모드 함께 지정
예) open("file.txt", ios::out | ios::app | ios::app | ios::binary); 
 입출력
 is_open()

파일이 잘 열렸는지 확인
정상이면 true, 비정상이면 false 반환 
 close()   파일 닫기
 eof()  파일의 마지막 위치에 도달했는지 여부 반환
 fail()

 파일 존재 여부 확인
 존재하면 false, 비정상이면 false 반환
 tellp()  현재의 파일 쓰기 위치 반환  출력
 (ofstream 동일)
 seekp(streampos pos)  파일 쓰기 위치 설정
 flush()





 메모리에 있는 데이터를 물리 파일에 실제 쓰기. 파일에 쓸 내용이 많으면 파일을 닫을 때까지 기다리지 않고 중간중간 flush()함수를 이용해 메모리 효율도 높이고 중간에 오류가 발생해도 전체 유실은 피할 수 있음.
 operator <<  파일에 문자열 쓰기
 put(char c)  파일에 문자 쓰기
 write(const char* s, streamsize n)









 파일에 정해진 크기만큼의 문자열 쓰기
 예)
 ofstream ofs("file.txt");
 char *s = "file contents";
 long size = 10;
 ofs.write(s, size);
 tellg()  현재 파일의 읽기 위치 반환  입력
 (ifstream 동일)
 seekg(streampos pos)  파일 읽기 위치를 설정
 operator >>  파일로부터 문자열 읽기
 get(char& c)  파일의 문자 읽기
 getline(char* s, streamsize n)  파일로부터 최대 정해진 크기만큼 줄의 문자열 읽기

 

728x90
반응형
LIST

'IT개발/정보 > Modern C++' 카테고리의 다른 글

decltype형  (0) 2021.12.26
auto형 변수  (0) 2021.12.26
특수 문자표  (0) 2021.12.26
C++11 표준 기본 자료형  (0) 2021.12.26
Modern C++ 이란?  (0) 2021.12.26
반응형
728x90
반응형
LIST

'IT개발/정보 > Modern C++' 카테고리의 다른 글

decltype형  (0) 2021.12.26
auto형 변수  (0) 2021.12.26
특수 문자표  (0) 2021.12.26
C++11 표준 기본 자료형  (0) 2021.12.26
간단한 파일 입출력  (0) 2021.12.26

+ Recent posts