::public/C++62 정적 결합, 동적 결합 #include #include "Animal.h" using namespace std; class A{public: int num;}; class B : public A{}; A operator+(const A& x, const A& y){ A a; a.num = x.num + y.num; return a;} B operator+(const B& x, const B& y){ B b; b.num = x.num * y.num; return b;} void func(int x) // 컴파일 시 함수 이름이 변경 name mangling, 정적 결합{} void func(int x, int y) // 컴파일 시 함수 이름이 변경 name mangling, 정적 결합{} void foo(Animal* anima.. 2020. 11. 27. 가상 함수 #include #include "Character.h" using namespace std; class Base{public: virtual void virtualFunc() { cout 2020. 11. 27. 상속의 기본 #include using namespace std; class Base{public: Base() { cout 2020. 11. 27. 사용자 정의 리터럴 #include #include using namespace std; class Length{private: const long double _value; Length(long double value) : _value(value) { } friend Length operator"" _m(unsigned long long value); friend Length operator"" _m(long double value); friend Length operator"" _km(unsigned long long value); friend Length operator"" _km(long double value); friend Length operator"" _mm(unsigned long long value); f.. 2020. 11. 23. 호출 연산자 오버로딩, 함수 객체 #include #include #include using namespace std; class Max{public: int operator()(int x, int y) { return max(x, y); }}; class AccMax{private: // 일반 함수와는 다르게 상태를 저장할 수 있다 int _max = numeric_limits::min(); public: int operator()(int x) { return _max = max(x, _max); }}; struct Average{private: double _total = 0; int _times = 0; public: double operator()(double value) { _times += 1; _total += value; .. 2020. 11. 23. 변환 연산자 오버로딩, 변환 생성자 #pragma warning(disable: 4996)#include using namespace std; class String{private: char* _chars; public: /* explicit */ String(const char* chars) // explicit 를 사용하지 않으면 암시적으로 형변환이 된다. : _chars(new char[strlen(chars) + 1]) { strcpy(_chars, chars); } /* explicit */ String(const char* s0, const char* s1) : _chars(new char[strlen(s0) + strlen(s1) + 1]) { _chars[0] = '\0'; strcat(_chars, s0); strcat(_.. 2020. 11. 23. 이전 1 2 3 4 5 6 7 8 ··· 11 다음