웅재의 코딩세상
C++ 클래스 객체를 배열로 선언 본문
Stock s[4] = {
Stock("A",10,1000),
Stock("B",20,1200),
Stock("C",20,1200),
Stock("D",20,1200)
};
위와 같이 s라는 이름의 Stock형 배열 3개를 선언되었다.
배열의 원소는 , 를 사용해 구분해 주어야 한다.
각 배열의 원소에 해당되는 생성자를 호출하여 그 생성자에 할당되어 있는 값마다 각 원소로 대입되게 된다.
일반적으로 배열을 사용하는 것과 같이 그 배열의 인덱스로 부터 다시 멤버 함수를 호출할 수 있다.
s[0].show();
배열의 첫 번째 원소인 Stock A가 지정되어 그 A에 할당 되어있는 정보가 출력되는 것을 확인할 수 있다.
4개의 배열 원소를 생성하고 그 배열 원소들에게 각각 또 다른 생성자를 할당해 주는 것이기 때문에
★ 클래스를 배열로 생성하기 위해서는 default 생성자가 반드시 정의되어 있어야 한다.
Stock first = s[0];
for(int i=1; i<4; i++)
first = first.topVal(s[i]);
first.show();
배열의 원소들을 비교하여 가장 주가가 높은 원소를 출력하는 코드이다.
topVal함수는 함수를 호출한 객체나 함수의 매개변수로 받은 객체에 shareVal을 비교하여 리턴을 하게 되는데
그 리턴형을 보게 되면 두 객체에 대한 참조를 리턴하기 때문에 topVal에 참조 연산자를 붙여주어야 한다.
main에서 Stock first에 s배열의 첫 번째 원소의 값을 직접적으로 대입하는 것이 아니라 그 주소에 대한 첫 번째 원소에 대한 포인터를 지정하는 방법을 사용할 수도 있다. 아래처럼!!
Stock &Stock::topVal(Stock& s){
if(s.share_val > share_val)
return s;
else return *this;
}
그럼 이제 메인문도 바꾸어 보면
Stock *first = &s[0];
for(int i=1; i<4; i++)
first = &first->topval(s[i]);
first->show();
이렇게 바꾸어 줄 수 있다.
반응형
'개념 > c++' 카테고리의 다른 글
C++ friend (0) | 2023.11.18 |
---|---|
C++ 연산자 오버로딩 (1) | 2023.11.18 |
C++ 추상화와 클래스 (1) | 2023.11.18 |
C++ 분할 컴파일 (0) | 2023.11.18 |
C++ template (0) | 2023.11.17 |