최대 1 분 소요

1. User defined literal

  • 사용자 정의 Literal 함수

2. 코드로 알아보기

#include <iostream> 
using namespace std; 

class Meter 
{ 
  int value; 
public: 
  Meter(int n = 0) : value(n) {} 
}; 
  
Meter operator""_m(unsigned long long n) 
{ 
  cout << "operator m" << endl; 

  Meter m(n); 
  return m; 
} 
int main() 
{ 
  float f = 3.4f; 

  Meter v = 10_m; // operator""m(10) 함수를 부름
}
  • 표준 literal 사용
#include <iostream> 
#include <string> 
#include <complex> 
#include <thread> 
#include <chrono> 
  
// 표준 literal을 사용
using namespace std::literals;

void foo(std::string s) { std::cout << "string" << std::endl; } 
void foo(const char* s)  { std::cout << "char*" << std::endl; } 
  
int main() 
{ 
  foo("hello");   // const char* 
  foo("hello"s);  // string operator""s(const char*) 

  std::complex<double> c1(3, 0); // 3 + 0i 
  std::complex<double> c2(3);  // 3 + 0i 
  std::complex<double> c3(3i); // 0 + 3i 

  std::chrono::seconds sec = 1h + 3min + 20s; 

  std::cout << sec.count() << std::endl; 

  std::this_thread::sleep_for(10s); // 10s : seconds operator""s(10) 
}

참고

codenuri 강석민 강사 강의 내용기반으로 정리한 내용입니다.
코드누리


This is personal diary for study documents.
Please comment if I'm wrong or missing something else 😄. 

Top

댓글남기기