All Development

C++) C++의 특징 Part 2

Todah 2024. 1. 9. 23:37
반응형

1. 생성자 다중 정의

- 반환자료가 없으며 다른 생성자의 값을 이관받는것이 가능하다.

 

 

2. 메서드

[ static 반환자료 클래스명 :: 함수명(), const ]

 

-  클래스에 속한 멤버 함수

-  static 선인 시 정적 멤버 함수라고 명확히 분류

-  const 선언 시 상수화 된 멤버로 분류

-  virtual 선언 시 가상 함수로 분류

 

 

#메서드와 thiscall 호출규약

 

- this 포인터는 클래스의 실제 인스턴스에 대한 주소를 가리키는 포인터이다.

- 클래스 코드 수준(현재)에서 앞으로(미래) 사용자 코드에 등장할 실제 인스턴스의 주소를 접근 할 때 사용한다.

- 모든 메서드는 숨겨진 첫번째 인수로 this포인터를 전달한다.

#include <iostream>

using namespace std;

class MyData
{
public:
	MyData() : data(0) {}

	int getData() {
		return data;
	}

	void setData(int data) {
		this->data = data;
	}

	void setData(double data) = delete;

private:
	int data;
};

int main()
{
	MyData a;

	a.setData(10);
	cout << a.getData() << endl;

	MyData b;

	//b.setData(5.5);
	cout << b.getData() << endl;

	return 0;
}

 

#객체 자신을 가리키는 포인터

 

>> 시점이 중요하다. 제작자가 현재 만든 시점에서 미래의 사용자가 어떤 인스턴스를 만들지 알 수 없기 때문에, this 포인터를 사용한다.

 

( setData 함수가 호출될 때 넘어온 this의 실제값은 미래에 결정이 나는거고, 그 결정난 값을 이용해서 포인터로 참조해서 인스턴스 주소에 접근한 다음, 멤버에 접근한다. )

 

Q. 그렇다면 왜

반응형

'All Development' 카테고리의 다른 글

C++) 상속  (1) 2024.03.22
C++) 객체 간 관계와 상속  (0) 2024.03.21
C++) C++의 특징 Part 1  (1) 2024.01.08
C++) C와 C++ 의 차이점 Part 2  (1) 2024.01.05
C++) C와 C++ 의 차이점 Part 1  (2) 2024.01.04