책 여러권봐서 다 다른거같음
class person
{
public:
void GetData(int, char*);
void ShowData();
private:
int Age;
char name[20]
};
void Person::GetData(int age,char *n)
{
Age = age;
strcpy(name, n);
}
막이런식으로 클래스 밖에 함수선언하는게 좋은거임???
그냥 클래스안에 다 쓰면안됨?
책 여러권봐서 다 다른거같음
class person
{
public:
void GetData(int, char*);
void ShowData();
private:
int Age;
char name[20]
};
void Person::GetData(int age,char *n)
{
Age = age;
strcpy(name, n);
}
막이런식으로 클래스 밖에 함수선언하는게 좋은거임???
그냥 클래스안에 다 쓰면안됨?
클래스 안에 다 써도 되긴한데 그럼 헤더파일을 못만듦
헤더파일을 못만든다는 소린 뭐여? 클래스 안에 다 집어넣어도 된다. 근데 그러면 컴파일 타임이 길어지니까 함수정의부분은 따로 빼서 쓰는거고. 클래스 안에 집어넣으면 대신 인라이닝이 가능하니까 성능상 이점이 있을 수 있고 header-only 라이브러리를 만들기도 쉬워서 클래스 안에 다 집어넣는걸 선호하는 사람도 있음.
본문을 예로 들면 저렇게 인터페이스와 구현을 구분하면 인터페이스 부분을 바로 person의 헤더파일로 따로 관리할 수 있지만 인터페이스와 구현을 섞어버리면 못만들지 ㅋ template은 인터페이스만 있는거니까 다른 얘기
인터페이스와 구현을 섞는게 아니라 개념을 섞었네. 템플릿이 인터페이스만 있다는건 또 무슨 소린지 모르겠다. 표현을 좀 똑바로 해봐.
기본이 안되어 있는 사람이었군
선언과 정의를 같이하면 불러올때 에러생긴다는 예기인듯 합니다
어차피 함수가짧으면 컴파일러가 자동으로 클래스안에 인라인처리한다... 이딴걸로 논쟁 ㄴㄴ
님은 왜 저랑 아이피가 같아서.....
선언과 정의 구분을 못하는구만. 공부하세욧!
인라이닝이 되냐안되냐의 문제가 아닌데 뭔 자꾸 딴소리여? 클래스 안에 다 넣는거랑 헤더 파일 만드는거랑 전혀 상관없다는데