C++/Overloading
2021. 3. 16. 00:20
입출력 연산자 오버로딩 (I/O Operator Overloading)
멤버 함수로 만들 수 없다.
- 첫 번째 인자가
stream
이기 때문이다.
- 첫 번째 인자가
예제
friend를 사용한 출력 연산자 오버로딩 예제
#include <iostream> class Point { double x_; double y_; double z_; public: Point(double x = 0.0, double y = 0.0, double z = 0.0) : x_(x), y_(y), z_(z) {} friend std::ostream& operator << (std::ostream& out, const Point& p) { out << '(' << p.x_ << ", " << p.y_ << ", " << p.z_ << ')'; return (out); } }; int main() { using namespace std; Point p1(0.0, 0.1, 0.2), p2(3.4, 1.5, 2.0); cout << p1 << ' ' << p2 << endl; } /* stdout (0, 0.1, 0.2) (3.4, 1.5, 2) */
stream
을 통해 파일 입출력을 할 경우, 이를 이용해서 굉장히 쉽게 할 수 있다.- 출력되는 파일은 VS기준 왼쪽 위의 파일명을 우클릭해서 나오는
Open Containing folder
를 클릭하면 열리는 폴더에 있다.- 단축키는
Ctrl + K
를 누른 다음R
을 누르면 된다. (Ctrl + R
이 아니다.)
- 단축키는
#include <iostream> #include <fstream> class Point { double x_; double y_; double z_; public: Point(double x = 0.0, double y = 0.0, double z = 0.0) : x_(x), y_(y), z_(z) {} friend std::ostream& operator << (std::ostream& out, const Point& p) { out << '(' << p.x_ << ", " << p.y_ << ", " << p.z_ << ')'; return (out); } }; int main() { using namespace std; Point p1(0.0, 0.1, 0.2), p2(3.4, 1.5, 2.0); ofstream of("out.txt"); of << p1 << ' ' << p2 << endl; of.close(); } /* out.txt (0, 0.1, 0.2) (3.4, 1.5, 2) */
- 출력되는 파일은 VS기준 왼쪽 위의 파일명을 우클릭해서 나오는
friend
를 사용한 입력 연산자 오버로딩 예제#include <iostream> class Point { double x_; double y_; double z_; public: Point(double x = 0.0, double y = 0.0, double z = 0.0) : x_(x), y_(y), z_(z) {} friend std::ostream& operator << (std::ostream& out, const Point& p) { out << '(' << p.x_ << ", " << p.y_ << ", " << p.z_ << ')'; return (out); } friend std::istream& operator >> (std::istream& in, Point& p) { in >> p.x_ >> p.y_ >> p.z_; return (in); } }; int main() { using namespace std; Point p1, p2; cin >> p1 >> p2; cout << p1 << ' ' << p2 << endl; } /* stdin 1 2 3 4 5 6 */ /* stdout (1, 2, 3) (4, 5, 6) */
'C++ > Overloading' 카테고리의 다른 글
C++ 증감 연산자 오버로딩 (Increment and Decrement Operator Overloading) (0) | 2021.03.16 |
---|---|
C++ 비교 연산자 오버로딩 (Comparison Operator Overloading) (0) | 2021.03.16 |
C++ 단항 연산자 오버로딩 (Unary Operator Overloading) (0) | 2021.03.16 |
C++ 산술 연산자 오버로딩 (Arithmetic Operator Overloading) (0) | 2021.03.16 |
C++ 오버로딩 (Overloading) (0) | 2021.03.16 |