일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 창업
- 엣지컴퓨팅
- uuid-ossp
- GraphQL
- SFINAE
- 도커
- 정렬
- 쿠버네티스
- 어셈블리어
- 어셈블리
- schema first
- 레이캐스팅
- c++
- 42서울
- mistel키보드
- psql extension
- 자료구조
- 동료학습
- adminbro
- 42seoul
- enable_if
- 프라이빗클라우드
- raycasting
- 스플릿키보드
- 스타트업
- 이노베이션아카데미
- 파이썬
- 부동소수점
- 텍스트북
- Cloud Spanner
- Today
- Total
목록Born 2 Code/C, C++ (16)
written by yechoi
👉 이 글은 C++ - Why static member function can't be created with 'const' qualifier 일부를 번역했습니다. 멤버 함수에 붙는 const 수식어의 의미는 객체 인스턴스를 변경하지 않을 것이고 const 객체에서 호출도리 수 있다는 것입니다. static 멤버 함수는 어떠한 객체 인스턴스에도 엮여있지 않습니다. const 객체의 static 변수를 호출하는 일은 없으므로, static 멤버 함수의 const 수식은 말이 안됩니다. const 수식어를 nonstatic 멤버 함수에 적용하면, 이는 this 포인터에 영향을 미칩니다. 클래스 C의 const 수식 멤버 함수에서 this 포인터는 C const * 가 됩니다. 반면 non-const 멤버 함..
SFINAE란 Substition Failure Is Not An Error의 약자이다. 템플릿 인자 추론에서, C++ 컴파일러는 적합한 오버로딩 함수를 찾는다. 그 과정에서 함수 템플릿을 인스턴스화할 때, 인자나 결과가 유효하지 않다면 '컴파일 에러'를 뱉는 대신에 오버로드 결과물에서 해당 인스턴스화한 것을 지운다. 무슨 의미인지는 코드 예시를 보며 확인해본다. long multiply(int i, int j) { return i * j; } template typename T::multiplication_result multiply(T t1, T t2) { return t1 * t2; } int main(void) { multiply(4,5); } 위 코드에서 단순 multiply 함수가 있고, 템플..
아래는 deque의 max_size() 구현. (출처 libstdc++) size_type max_size() const _GLIBCXX_NOEXCEPT { return _Alloc_traits::max_size(_M_get_Tp_allocator()); } 따라가다보면 결국 std::allocator의 max_size()를 받아쓰는 형식인데, 이는 대부분의 구현에선 아래를 반환한다. std::numeric_limits::max() / sizeof(value_type) (출처: cppreference)
복사 생성자는 '초기화', 복사 대입 연산자는 '할당'을 하자 복사 생성자는 생성과 동시에 초기화가 일어나야 한다. ClapTrap::ClapTrap(const ClapTrap & ref) : _name(name) { } 반면 대입연산자는 초기화가 모두 일어난 후에 대입을 하는 것이다. ClapTrap& ClapTrap::operator=(const ClapTrap & ref) { _name = ref._name; return (*this); } 때문에 아래처럼 복사 대입 연산자를 만들어 두고 이를 복사 생성자에 활용하는 건 말이 안된다. 복사 생성자는 생성과 동시에 초기화를 해야하는데, 내부에서 할당연산자를 사용해버리면 초기화를 한 후에 대입을 해버리는 꼴이 된다. ClapTrap::ClapTrap(c..
단일 접속 서버 구현하기 두 개의 컴퓨터에 있는 프로세스간 통신 각각의 컴퓨터는 send buffer, receive buffer (socket) 모두 생성 인터넷을 통해 통신 프로토콜 주소 정보 담기 struct sockaddr_in 에 정보를 담을 것. 구조체의 구성은 다음과 같음. sin_family (4byte) : 프로토콜 유형, IPv4의 경우 AF_INET로 기입 sin_port (4byte) : 포트번호(네트워크 방식의2진) sin_addr.s_addr (8byte) : ip 주소(2진) 안쓰는 8byte 포트번호 변환 네트워크 바이트 순서인 빅엔디안으로 2진법으로 표현해야 함.호스트 바이트 순서는 machine-dependent(빅엔디안/리틀엔디안)하므로, 이를 네트워크 바이트로 그대로 ..