데이터 은닉 및 캡슐화로 학생 데이터 유형을 만들고 싶다고 가정합니다. 학생은 first_name, last_name, age 및 class 항목이 있어야 하지만 이러한 변수는 직접 액세스할 수 없습니다. get_firstname() set_firstname(), get_age() set_age() 등과 같은 일부 함수를 정의하여 변수 값을 검색하고 업데이트하고 to_string() 함수를 사용하여 이 형식(age, first_name, last_name, class ). 콘솔에서 4개의 매개변수를 입력으로 받아 우리가 정의한 setter 메소드를 사용하여 설정하고 getter 메소드를 사용하고 마지막으로 to_string() 메소드를 사용하여 각 항목을 표시합니다.
따라서 입력이 다음과 같으면
priyam kundu 16 10
그러면 출력은
16 priyam kundu 10 (16, priyam, kundu, 10)
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
first_name, 유형 문자열 및 age, 유형 정수의 cl의 last_name으로 클래스 정의
-
모든 속성에 대한 getter 함수 정의
-
모든 속성에 대한 setter 함수 정의
-
string-stream 객체를 사용하여 to_string() 함수를 정의하고 출력 형식과 일치하는 형식화된 문자열을 만듭니다.
-
주요 방법에서 다음을 수행하십시오 -
-
각 줄을 읽고 각각 first_name, last_name, age, cl을 저장합니다.
-
이 값을 클래스 멤버로 설정하기 위해 setter 함수를 호출합니다.
-
getter 메서드를 사용하여 모든 속성을 인쇄합니다.
-
to_string() 함수를 사용하여 이 형식(age, first_name, last_name, cl)으로 학생 정보를 표시합니다.
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
#include <iostream> #include <sstream> using namespace std; class Student{ private: int age, cl; string first_name, last_name; public: int get_age(){return age;} int get_class(){return cl;} string get_firstname(){return first_name;} string get_lastname(){return last_name;} void set_age(int a){age = a;} void set_class(int c){cl = c;} void set_firstname(string fn){first_name = fn;} void set_lastname(string ln){last_name = ln;} string to_string(){ stringstream ss; ss << "(" << age << ", " << first_name << ", " << last_name << ", " << cl << ")"; return ss.str(); } }; int main() { Student stud; int age, cl; string first_name, last_name; cin >> first_name >> last_name >> age >> cl; stud.set_age(age); stud.set_class(cl); stud.set_firstname(first_name); stud.set_lastname(last_name); cout << stud.get_age() << endl; cout << stud.get_firstname() << endl; cout << stud.get_lastname() << endl; cout << stud.get_class() << endl; cout << endl << stud.to_string(); }
입력
priyam kundu 16 10
출력
16 priyam kundu 10 (16, priyam, kundu, 10)