반응형
객체배열 : 같은 클래스에 속하는 여러개의 객체의 배열
-> 표준 데이터형의 배열을 선언하는 것과 동일한 방법
Stock mystuff[4]; //4개의 Stock 객체로 이루어진 배열 생성
명시적으로 초기화되지 않은 클래스 객체를 생성할 때, 프로그램은 항상 디폴트 클래스 생성자를 호출한다.
[생성자를 정의하지 않았거나(이경우 암시적 디폴트생성자가 생성), 하나의 명시적인 디폴트 생성자를 정의가 필요하다]
mystuff[0].update(); //제 1 원소에 update()를 적용
mystuff[3].show(); //제 4원소에 show()를 적용
const Stock* tops=mystuff[2].topval(mystuff[1]);
//제 3원소와 제2원소를 비교해 보다 높은 수준의 전체값에 맞춘다.
const int STKS=4;
Stock stocks[STKS]={
Stock("NanoSmart", 12.5, 20),
Stock("Boffo Objects",200,2.0);
Stock("Monolithic Obelisks", 130, 3.25);
Stock("Fleep Enterprises", 60, 6.5)
};
-> 배열을 초기화하는 표준 형식을 사용
-> 배열의 값들을 콤마로 서로 분리하고 전체를 중괄호로 묶는다.
-> 생성자의 메서드에 대한 각각의 호출이 배열의 값이 된다.
-> 클래스가 생성자를 하나 이상 가지고 있으면, 배열의 각 원소마다 서로 다른 생성자를 사용할 수 있다.
const int STKS=10;
Stock Stocks[STKS] = {
Stock("NanoSmart", 12.5, 20),
Stock(),
Stock("Monolithic Obelisks", 130, 3.25)
};
-> Stock(const char* co, int n, double pr)생성자를 사용해 stocks[0]과 stocks[2]를 초기화
-> Stock() 생성자를 사용해 stocks[1]을 초기화
[나머지는 디폴트 생성자를 사용해 초기화]
1. 디폴트 생성자를 사용해 배열의 원소들을 생성
2. 중괄호 안에 있는 생성자들이 임시객체를 생성하고, 배열원소에 복사
[즉, 객체배열을 생성하기 위해서는 하나의 디폴트 생성자를 가져야한다.]
4개의 배열의 원소를 초기화하고 내용을 출력해 주식 가치가 가장 큰 원소를 알아내는 프로그램
[topval()은 두 객체만 검사하기 때문에, for루프를 이용.]
[어떤 요소가 높은 값을 지니고 있는지 찾기위해 pointer-to-stock 사용]
//usestok2.cpp
#include <iostream>
#include "stock20.h"
const int STKS = 4;
int main()
{
//초기화된 객체들의 배열을 생성
Stock stocks[STKS] = {
Stock("NanoSmart", 12.5, 20),
Stock("Boffo Objects",200, 2.0),
Stock("Monolithic Obelisks", 130, 3.25),
Stock("Fleep Enterprises", 60, 6.5)
};
std::cout << "보유 주식 리스트: \n";
int st;
for (st = 0; st < STKS; st++)
stocks[st].show();
//첫번째 원소에 포인터 지정
const Stock* top = &stocks[0];
for (st = 1; st < STKS; st++)
{
top = &top->topval(stocks[st]);
}
//가장 가치 있는 주식의 최고치
std::cout << "\n최고 가지의 주식: \n";
top->show();
return 0;
}
반응형
'Programming > C++ 2' 카테고리의 다른 글
[C++ 요약] 10장. 객체와 클래스 (0) | 2021.04.12 |
---|---|
[C++] 10장-7. 추상화 데이터형 (0) | 2021.04.12 |
[C++] 10장-4. this 포인터 (0) | 2021.04.11 |
[C++] 10장-3. 클래스 생성자와 파괴자 (0) | 2021.04.11 |
[C++] 10장-2. 추상화와 클래스 (0) | 2021.04.11 |