일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- Smart Pointer
- c++
- virtual function
- 다형성
- 함수 객체
- 영화
- 오블완
- 언리얼
- 상속
- 메타테이블
- 예외
- more effective c++
- 루아
- 반복자
- 티스토리챌린지
- resource management class
- reference
- 암시적 변환
- lua
- Effective c++
- 스마트 포인터
- operator new
- effective stl
- UE4
- 게임
- implicit conversion
- 비교 함수 객체
- 영화 리뷰
- exception
- 참조자
- Today
- Total
목록implicit conversion (4)
스토리텔링 개발자
항목 21 : 오버로딩은 불필요한 암시적 타입 변환을 막는 한 방법이다. 암시적 변환// Unlimited Precision Integerclass UPInt{public: UPInt(); UPInt(int value); ...};const UPInt operator+(const UPInt& lhs, const UPInt& rhs);// 일반적인 사용법UPInt upi1, upi2;...UPInt upi3 = upi1 + upi2;// 이렇게 사용하게 된다면?upi3 = upi1 + 10;upi3 = 10 + upi2;UPInt는 int를 생성자로 받아들이기 때문에 암시적 변환이 일어나 UPInt 타입을 임시 객체로 생성한다.하지만, 임시 객체는 리소스의 낭비이다.사실 이 코드의 목적..
항목 5. 사용자 정의 타입 변환 함수에 대한 주의를 놓지 말자 암시적 변환C처럼 C++ 역시 암시적 변환을 지원한다.예컨대 char -> int, short -> double 로 군소리 없이 변환시켜 준다.심지어 int -> short, double -> char 처럼 데이터 손상 여지가 있는 변환도 지원한다.raw 타입에 대해선 어쩔 수 없지만, 커스텀 타입에 대해서는 이 암시적 변환을 확실히 제어할 수 있다.암시적 타입 변환을 위해 컴파일러가 사용할 수 있는 함수를 제공하면 된다. 암시적 타입 변환 함수의 종류 1. 단일 인자 생성자(single-argument constructor)인자를 하나만 받아 호출하는 생성자를 말한다.하나의 매개변수만 받도록 선언.혹은 여러 매개변수이나, 처음 것을..
항목 45. “호환되는 모든 타입”을 받아들이는데는 멤버 함수 템플릿이 직방! 포인터의 암시적 변환(implicit conversion)스마트 포인터로는 대신할 수 없는 포인터의 특징이다.// 포인터의 경우class Top { ... };class Middle : public Top { ... };class Bottom : public Middle { ... };Top* pt1 = new Middle; // Middle* -> Top* 암시적 변환Top* pt2 = new Bottom; // Bottom* -> Top* 암시적 변환const Top* pct2 = pt1; // Top* -> const Top* 암시적 변환// 사용자 정의 스마트 포인터의 경우templateclass SmartPtr{p..
항목 24. 타입 변환이 모든 매개변수에 대해 적용되어야 한다면 비멤버 함수를 선언하자 클래스에서 암시적 타입 변환을 지원하는 것은 일반적으로 안 좋은 생각이다.다만, 숫자 타입은 C++ 기본 암시적 변환과 별반 다르지 않으므로 허용해도 좋을 것이다. 클래스 멤버 함수에서 사칙 연산 구현class Rational // 유리수 클래스{public: Rational(int numerator = 0, int denominator = 1); // explicit을 붙이지 않은 이유는 // int에서 Rational 암시적 변환을 허용하기 위함 int numerator() const; int denominator() const; public: const Rati..