반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 자바스크립트
- Level3
- 프로그래머스
- Medium
- python
- Level1
- 리액트
- LeetCode
- 고득점Kit
- 카카오
- 백준
- Doitvue.js입문
- 동적계획법
- 배열
- react
- Level2
- web
- CS
- 파이썬
- typescript
- 프로그래밍
- 코테연습
- VUE
- 리트코드
- C++
- sql
- OS
- javascript
- dp
- 웹프로그래밍
Archives
- Today
- Total
[c++] class , object ( 클래스, 객체) 본문
반응형
- class 키워드 사용
- public과 같은 접근 제어와 관련된 키워드 사용
- 멤버 함수(메서드)를 정의할 수 있다.
class Point {
public:
int x, y;
void Print() {
cout << x << "," << y << endl;
};
void Print(int a) {
cout << a << ":" << x << "," << y << endl;
};
};
int main()
{
Point p1, p2;
p1.x = 10;
p1.y = 10;
p2.x = 20;
p2.y = 20;
p1.Print();
p2.Print(10);
return 0;
}
-
클래스 정의 밖에서 함수를 정의 하는 경우
-
클래스 정의 안에는 메서드의 프로토 타입만 남겨둔다.
-
클래스 정의 밖에서는 범위 지정 연산자를 사용해서 함수를 정의
class Point { public: int x, y; void Print(); }; void Point :: Print(){ cout << x << "," << y << endl; };
-
-
생성자, 소멸자
-
생성자 : 객체를 생성할 때 자동적으로 호출되는 함수
-
소멸자 : 객체가 소멸될 때 자동적으로 호출되는 함수
class Point { public: int x, y; Point(); // 생성자는 리턴 타입이 없다, 클래스의 이름과 같다. Point(int _x, int _y);//생성자 오버로딩 void Print(); }; void Point :: Print(){ cout << x << "," << y << endl; }; Point::Point() { x = 0; y = 0; }; Point::Point(int _x, int _y) { x = _x; y = _y; }; int main() { Point p1, p2,p4(200,150); p1.x = 10; p1.y = 10; p2.x = 20; p2.y = 20; p4.Print(); Point p3 = p2; // 복사 생성 : 초기화 p3.Print(); p3 = p1;//대입 p3.Print(); return 0; }
-
-
복사 생성자
자신과 동일한 타입의 객체에 대한 레퍼런스를 인자로 받는 생성자 (얕은 복사임)(생략) Point::Point(const Point& pt) { cout << "Copy constructor !" << endl; x = pt.x; y = pt.y; } int main() { Point p3 = p2; // 초기화 복사 생성자 출력 Point p6(p1); return 0; }
-
생성자에서 초기화가 필요한 멤버 변수 (const, reference)
class NeedConstructor { public: const int max; int& ref; int temp; NeedConstructor(); NeedConstructor(int cnt, int& number); }; NeedConstructor::NeedConstructor() : max(100), ref(temp) { temp = 10; }; NeedConstructor::NeedConstructor(int cnt, int& number): max(cnt), ref(number) { temp = 10; }; int main() { NeedConstructor cr; int num = 400; NeedConstructor cr2(500,num); cout << cr.max << endl; cout << cr.ref << endl; cout << cr2.max << endl; cout << cr2.ref << endl; }
-
소멸자
객체가 사용한 리소스 정리, main 함수가 끝나는 시점에 동작class DynamicArray { public: int* arr; DynamicArray(int arraySize);//생성자 ~DynamicArray();//소멸자 }; DynamicArray::DynamicArray(int arraySize) { arr = new int[arraySize]; }; DynamicArray::~DynamicArray() {//소멸자 delete arr; arr = NULL; }; int main() { int size; cout << "정수 몇 개?" << endl; cin >> size; DynamicArray da(size); for (int i = 0; i < size; ++i) cin >> da.arr[i]; for (int i = size - 1; i >= 0; --i) cout << da.arr[i] << " "; cout << "\n"; return 0; }
-
정적(static) 멤버 제어
모든 객체가 공유하는 멤버 변수class Student{ public: string name; int sNo; public: static int student_cout; static void PrintStdCount(); }; int Student::student_cout = 0; void Student::PrintStdCount(){ };
-
접근 제어
내부 public 메소드로 모두 접근 가능- public
- protected :외부 접근 불가
- private:외부 접근 불가
반응형
'객체지향프로그래밍 (C++)' 카테고리의 다른 글
[c++] Pointer (포인터) (0) | 2020.07.07 |
---|---|
[c++] inline variable (0) | 2020.07.07 |
[c++] Header (0) | 2020.07.06 |
[c++] string(문자열) (0) | 2020.07.06 |
[c++] dynamic memory allocation (동적 메모리 할당) ② (0) | 2020.07.06 |
Comments