클래스 타입 변환 연산자타입 변환 연산자 오버로딩을 통해 자기 자신의 타입을 다른 타입으로 변환소스코드#include using namespace std;class Point { int x; int y;public: explicit Point(int _x = 0, int _y = 0) : x(_x), y(_y) {} void Print() const { cout 코드 내용Point형 pt를 생성자 매개변수 2,3을 전달하여 생성.int형 n에 pt를 넣으면 타입변환 오버로딩 함수가 호출되어 this.pt의 x값만 반환되며 n에 들어가게됨.그 결과 n에는 pt의 2값이 들어갈 수 있어 결과적으로 2가 출력.실행 결과
타입 변환 연산자 오버로딩클래스에 각기 다른 타입으로 생성자를 오버로딩 하는 방식소스코드#include using namespace std;class A {};class B {public: /*B() { cout 코드 내용A 클래스 타입 a, int형 n, double형 d를 그리고 B클래스타입 b 총 4개를 미리 정의b에 각각 a, n, d에 대한 생성자로 할당해줌.B클래스에 있는 오버로딩된 생성자들을 통해 특정 타입을 인자로 받는 생성자 호출을 통한 타입 변환(객체 생성 후 대입)이 가능해짐!실행 결과
스마트 포인터C++에서 동적 메모리 할당과 누수를 관리하는 도구소스코드#include using namespace std;class Point { int x; int y;public: Point(int _x = 0, int _y = 0) : x(_x), y(_y) {} void print() const { cout () const { return ptr; } Point& operator*() const { return *ptr; }};void main() { Point* p1 = new Point(2, 3); //PointPtr은 스택 메모리에, Point는 힙 메모리에 적재됨! PointPtr p2 = new Point(5, 5); p1->print(); //p1->print() 호출 (*p1)...
클래스에 배열 인덱스를 적용시키게 하는 연산자 소스코드#include using namespace std;class Array { int* arr; int size; int capacity;public: //기본 생성자 cap매개변수 100을 받고 capacity를 100으로 초기화하여 arr크기를 100칸 할당하여 arr에 넣는다. Array(int cap = 100) : arr(0), size(0), capacity(cap) { arr = new int[capacity]; //arr[100] } ~Array() { delete[] arr; //동적 할당 해제 } void Add(int data) { if (size 코드내용1. Main함수에서 Array클래스 ar을 매개변수 10을 전달하여 10..
함수 호출 연산자 오버로딩( ()연산자 )객체를 함수처럼 동작하게 하는 연산자 소스코드#include using namespace std;struct FuncObject {public: void operator()(int arg) const { cout 코드 내용main함수 내 함수호출에 매개변수 갯수에 따라 오버로딩 하는 함수가 달라지는 것.암시적 호출은 함수를 간접적으로 호출하는 것이고명시적 호출은 함수를 직접적으로 호출하는 것이라 보면됨. 결과
연산자 오버로딩C++에서 제공하는 클래스 타입(사용자 정의 타입)에도 연산자를 사용할 수 있게 하는 문법Example)기본타입 으로 쓰는 int형 X와Y를 더해서 Z에 값을 넣는Z = X + Y클래스타입 Point(int x,int y)인 P1과 P2를 각각 P1(1,1) P2(2,2)로 초기화 후 P3에 넣기P3 = P1 + P2Point 형이지만 위에 기본타입 처럼 연산자를 적용할 수 있게 하는 문법 덧셈 연산자 오버로딩 코드class point { int x; int y;public: point(int _x = 0, int _y = 0) : x(_x), y(_y) {} void print() const { cout x + arg.x; pt.y = this->y + arg.y; return pt;} ..