목록C++ (74)
일상 코딩
#include #include using namespace std; class Fraction { private: int m_numerator; int m_denominator; public: // 문자형 들어오면 삭제해버리는 명령어. // 혹은 구버전에서 쓰던 습관 같은것을 원천 차단하는 수단으로도 사용됨. Fraction(char) = delete; // 함수 인자 입력시 명확하게 강제하는 explicit 명령어. // converting constructor로 자동으로 작동되게 막는 명령어이기도함. explicit Fraction(int num = 0, int den = 1) : m_numerator(num), m_denominator(den) { assert(den != 0); cout
Copy Constructor return Value Optimization #include #include using namespace std; class Fraction { private: int m_numerator; int m_denominator; // private 영역으로 넣게되면 복사가 안되게 된다. // Fraction(const Fraction &fraction) // copy constructor // : m_numerator(fraction.m_numerator), // m_denominator(fraction.m_denominator) // { // // 복사 생성자가 얼마나 자주 생성이되는지 알아보는 출력 코드 // cout
#include using namespace std; class Cents { private: int m_cents; public: Cents(int cents = 0) { m_cents = cents; } int getCents() { return m_cents; } void setCents(int cents) { m_cents = cents; } operator int() { cout
#include using namespace std; class Accumulator { private: int m_counter = 0; public: int operator () (int i) { return (m_counter += i); } }; int main() { Accumulator acc; // functor cout
#include #include class IntList { private: int m_list[10]{1,2,3,4,5,6,7,8,9,10}; public: // void setItem(int index, int value) // { // m_list[index] = value; // } // int getItem(int index) // { // return m_list[index]; // } // // array 자체를 포인터로 얻는 방법 // int * getList() // { // return m_list; // } int & operator [] (const int index) { // 이렇게 assert로 막아줘야 // runtime error debugging시 시간을 // 아낄 수 있다..
증감 연산자 작동 원리를 이 예제를 통해 확인 할 수 있다. #include using namespace std; class Digit { private: int m_digit; public: Digit(int digit = 0) : m_digit(digit) {} // prefix Digit &operator ++ () { ++m_digit; return *this; } // postfix Digit operator ++ (int) { Digit tmp{m_digit}; ++(*this); return tmp; } friend ostream &operator
※ 비교 연산자 오버로딩시 주의점. return 문 안에서 오름차순은 ""으로 #include #include #include #include using namespace std; class Cents { private: int m_cents; public: Cents(int cents = 0) { m_cents = cents; } int getCents() const { return m_cents; } int &getCents() { return m_cents; } friend bool operator < (const Cents &c1, const Cents &c2) { return c1.m_cents < c2.m_cents; } friend std::ostream &operator
#include #include using namespace std; class Cents { private: int m_cents; public: Cents(int cents = 0) { m_cents = cents; } int getCents() const { return m_cents; } int &getCents() { return m_cents; } Cents operator+(const Cents &c2) { return Cents(this->m_cents + c2.getCents()); } bool operator ! () const { return (m_cents == 0) ? true : false; } friend std::ostream &operator
※ 입출력 연산자 "≪", "≫" 오버로딩 예제 ● 파일 입출력 라이브러리 "fstream"을 이용한 "out.txt"로 결과값 출력. #include #include using namespace std; class Point { private: double m_x, m_y, m_z; public: Point(double x = 0.0, double y = 0.0, double z = 0.0) : m_x(x), m_y(y), m_z(z) {} double getX() { return m_x; } double getY() { return m_y; } double getZ() { return m_z; } friend std::ostream& operator point.m_z; // out
출처 https://gist.github.com/mcleary/b0bf4fa88830ff7c882d C++ Timer using std::chrono C++ Timer using std::chrono. GitHub Gist: instantly share code, notes, and snippets. gist.github.com #include #include #include #include class Timer { public: void start() { m_StartTime = std::chrono::system_clock::now(); m_bRunning = true; } void stop() { m_EndTime = std::chrono::system_clock::now(); m_bRunning ..