카테고리 없음
프로그래밍 C++ (2)
김프로722
2024. 5. 22. 17:23
반응형
생성자 활용하기 (객체 초기화)
- 생성자는 주로 객체를 초기화 할때 쓴다.-> 객체를 초기화한다는 말은 객체의 멤버 변수들을 초기화한다는 말이다
- 함수 중복(오버로딩)을 사용하여 매개변수가 있을 때와 없을 때 두 경우의 초기화를 수행한다


※ 디폴트 매개변수로 생성자를 만들면 매개변수 없는 생성자를 따로 만들지 않아도 된다.
※정적 멤버 (클래스::)
- static이라는 말이 쓰여져 있으면 소속이 클래스에 있다 객체소속이 아님
- 보통 우리가 static이라는 함수는 객체에 소속이 된다(쓸때 객체 . 어쩌구)
- 어떤 "객체를 통해" 이 함수를 호출해야만 하는 상황이 썩 깔끔하지 않다-> 정적멤버사용
-


※상수형 메서드(상수란 = 저장된 값의 변경이 불가능한 공간)
- int 앞에 const를 붙이면 a는 상수로 선언되어 처음 초기화된 값을 그대로 유지하고 다른 값을 대입할 수 없다const int a= 10;
a = 20;
- 매개변수에 const라는 키워드를 붙일 수도 있다
- 바로 멤버 메서드를 상수형으로 지정할 수 있다는 뜻
- -리턴타입 메서드 이름(매개변수) const
- 메서드 소괄호 뒤에 const를 적으면 된다 메서드가 상수형이라는 것은 메서드 내부에서 자기 객체(*this)의 멤를 바꿀 수 없다는 것을 의미한다
- 상수형 메서드 안에서 객체의 멤버 변수를 다른 값으로 바꾸려고 하면 컴파일러 에러가 난다


※메서드 선언과 정의 분리하기(프로토타입과 같은개념


- 정의는 클래스 밖에서 했다
- 생성자 소멸자, 멤버 메서드는 정의를 따로 분리해 적을 떄는 이름 앞에 vector2::와 같이 클래스 이름을 써야한다
- 주의할 점은 생성자나 소멸자는 리턴 타입이 없으므로 vector2::vector2()처럼 그냥 이름을 앞에 붙이면 되지만 메서드의 경우 float vector:: getx()처럼 리턴 타입 뒤 그리고 메서드 이름 앞에 네임 스페이스를 적어야한다는 사실이다
연산자 오버로딩
- 그 동안은 기본타입(int double 등)에 +-와 같은 연산자를 사용하여 사칙연산을 해왔다
- 그런데 앞 절에서 만들어본 벡터와 같은 타입은 사칙연산 할 수 없다
- 연산자 오버로딩이란 원래는 연산이 되지 않는 타입끼리 연산자를 새로 정의하는 것을 말한다.


-> 이렇게 operator + / - 를 사용하면 메인 함수 내에서도 실제로 vector = a+ b 이렇게 해도 에러가 나지 않는다.
반응형