우리가 이러한 구조를 하나로 묶어서 표현할 수 있다. -> struct

print의 매개변수를 struct로 받아버리자.

void print(const Friend &fr){
	cout << fr.name << ...
}

print(jj);

fr.name, fr.address 등을 쓰는 것도 번거롭다.

struct Friend{
    string name;
    string address;
    int age;
    double height;
    
    void print(){
		cout << name << " " << address << "\n";
	}  
};

int main(){
	...
	Friend jj; // instanciation , instance
	jj.print();
	return 0;
}

struct 안에 print를 넣어 깔끔하게 표현할 수 있다.

데이터와 기능이 묶여있다 -> object

단순한 기능 -> struct도 가능. but struct는 데이터만 묶는 경우가 일반적

더 복잡하고 다양한 기능을 위해 class로 쓰는게 일반적.

class Friend{
public: // access specifier(public,private,protected)
	string _name // member라는 것을 표현하기 위해 보통 언더바 or m_ 로 표현 
}

vector로도 받을 수 있다.

vector<Friend> my_friends;
my_friends.resize(2);

my_friends[0].print();
my_friends[1].print();
...