영넌 개발로그
[C++ 기초] class overloading / 헤더파일 만들어 쓰기 / access control (public, private) 본문
코딩/C++
[C++ 기초] class overloading / 헤더파일 만들어 쓰기 / access control (public, private)
영넌 2020. 10. 27. 02:20#include <iostream>
#include <string>
using namespace std;
class PrintData
{
public:
void myprint(int i) {
cout << "int: " << i << endl;
}
void myprint(double d) {
cout << "double: " << d << endl;
}
void myprint(string s) {
cout << "string: " << s << endl;
}
};
int main() {
PrintData pd;
pd.myprint(3);
pd.myprint("Hello World");
pd.myprint(3.52);
return 0;
}
class function prototype(==declertaion)
- function decleration선언과 definition정의(==implementation)를 구별
- class 내부에는 declaration (prototype)만 지정
- class 외부에 function definition
- 왜??
인터페이스와 구현을 분리하여 코드 생산성을 높인다.
소스 코드를 감출 수 있음
헤더만 가져와서 사용할 때 보기에 좋음
#include <iostream>
#include <string>
using namespace std;
class PrintData
{
public:
void myprint(int i);
};
void PrintData::myprint(int i) {
cout << "int: " << i << endl;
}
//PrintData 클래스 안에 있는 함수다 .
int main() {
PrintData pd;
pd.myprint(3);
return 0;
}
위의 두개를 이용한 실제 메인 파일>
외부파일을 가져와 쓰는 것
private
class 구현하는 코드에서만 사용 가능
안써도 기본은 private
class 밖에서 건들 수 없음 (값을 바꿀 수 없음)
class 밖에서 변수를 건들고자하면 에러남
class 안의 변수이름과 밖에 변수이름이 같아도 다른 변수임
#include <iostream>
#include <string>
using namespace std;
class PrintData
{
private:
int a; //class member variable
double b; //class member variable
public:
PrintData(int _a, double _b);
void myprint();
};
PrintData::PrintData(int _a = 10, double _b = 45.0) : a(_a), b(_b) {
}
void PrintData::myprint() {
cout << "int: " << a << endl;
cout << "double: " << b << endl;
}
int main() {
PrintData pd;
//pd.a = 100; <- 불가능
//pd.b = 200.459; <- 불가능
pd.myprint();
return 0;
}
#include <iostream>
#include <string>
using namespace std;
class Grade
{
private:
int cprog; //0~100
int math; //0~100
public:
int show_cprog() {
return cprog;
}
int show_math() {
return math;
}
//데이터 유효성 체크
void assing_cprog_score(int s) {
if ((s < 0) || (s > 100)) {
cprog = 0;
}
else {
cprog = s;
}
}
void assing_math_score(int s) {
if ((s < 0) || (s > 100)) {
math = 0;
}
else {
math = s;
}
}
};
int main() {
Grade g;
g.assing_cprog_score(-45);
g.assing_math_score(20);
return 0;
}
'코딩 > C++' 카테고리의 다른 글
[C++ 기초] Vector (0) | 2020.10.27 |
---|---|
[객체 기반 프로그래밍] getter, setter / object as 파라미터, 반환 값 (0) | 2020.10.27 |
[C++ 기초] 객체의 이해, 원 그리기 (0) | 2020.10.26 |
[C++ 기초] 객체 참조 / 객체 참조 포인터 / this 포인터 / SLL 구현 (0) | 2020.10.26 |
Comments