목록분류 전체보기 (242)
Minwoo Dev.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/1VrIK/btsF2OkEHbG/wgnFB5tdpOggb1fCBsFqq1/img.png)
this C++에서 this는 해당 객체 자체를 참조하는 포인터이다. 객체 내에서 본인이 가지고 있는 멤버변수나 멤버 함수에 접근하기 위하여 this를 많이 사용한다. #include using namespace std; class Score { private: int schoolNum; int score; public: Score(int schoolNum, int score) { this->schoolNum = schoolNum; // this 사용!! this->score = score; // this 사용!! } void showInfo() { cout score = score; } void showInfo() { cout
객체 포인터 배열 클래스를 이용하여 객체를 생성할 때, 배열의 형태로도 생성할 수 있다. MyClass myclass[4]; // MyClass라는 클래스로 생성한 객체 배열 myclass 위처럼 MyClass 클래스를 이용하여 myclass라는 객체를 배열의 형태로 생성할 수 있다. 예제 코드를 보자. #include #include using namespace std; class MyFamily { private: char *name; int age; public: MyFamily(char *_name, int _age) // 생성자 { name = _name; age = _age; } MyFamily() // 생성자 { name = NULL; age = 0; } void ShowInfo() { cout
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/clLX9M/btsF3CYceuc/UrVUslnLktfICFQT7fa7Sk/img.png)
소멸자(Destructor) 생성자가 객체의 생성과 함께 호출되는 것이었다면 소멸자는 객체의 소멸과 함께 호출되는 함수이다. 생성자의 이름이 클래스의 이름과 같아야 했던 것과 똑같이, 소멸자의 이름도 클래스의 이름과 동일해야 한다. 다른 점이라면 앞에"~" 가 붙는다는 것이다. ~클래스이름(){ 객체가 소멸될 때 실행할 코드 } ~생성자 이름() 과 같은 형식으로 소멸자를 선언한다. #include using namespace std; class Myclass { private: char *name; int score = 0; public: Myclass(char *username, int _score) { int len = strlen(username) + 1; name = new char[len]; ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/boc6B2/btsF3oFGHcg/V1akMC6kkKasBiuxEHaWU0/img.png)
this 객체지향 프로그래밍을 할 때, 클래스 내부의 메서드에서 내부변수에 접근할 때 사용한다. package test; public class classEx { int num; void addNum(int num) { num += num; } void showNum(){ System.out.println("num = "+num); } } 위와 같이 클래스 내부에 num이라는 내부변수가 존재하는데, addNum이라는 메서드에서 매개변수로 받아온 num을 내부변수의 num에 저장하고 싶다. 두 변수의 이름이 같다. 따라서 그냥 위처럼 작성하고 실행한다면 package test; public class classMain { public static void main(String[] args) { classE..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bb38rg/btsF2SfWhxA/tFC4Fxm64K7HtJKUQyNB2k/img.png)
Java 는 기본적으로 객체지향 프로그래밍 언어이다. 객체지향 프로그래밍(OOP, Object-Oriented Programming) 클래스라는 묶음 안에 해당 프로그램의 속성(변수)와 기능(함수)를 넣어두고 사용하는 프로그래밍 방식이다. 강아지라는 동물에 대해서 특징을 생각해 보자. 속성, 즉 수치로 나타낼 수 있는 값은 키, 배고픈 정도, 이름 등등이 있을 것이고, 할 수 있는 행동(기능)은 짖기, 소개하기, 밥달라하기가 있을 것이다. 아래 코드를 보자, 우리가 기본적으로 사용하는 방식인 절차지향 프로그래밍이다. package test; public class DogWithoutOop { public static void main(String[] args) { int height = 50; Strin..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cHFe31/btsFSb7xcFf/hMx4IDespwQEkhW8RYRC7K/img.png)
디폴트 생성자(Default Constructor) #include using namespace std; class MyClass { private: int num; public: // 생성자 없음!!!! void SayHi() { cout
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/o2ZMw/btsFRkKKAS6/Jkd7hHXcV5eSDmKZkyX9Xk/img.png)
생성자(Constructor) 생성자는 객체 생성 시 호출된다 함수의 일종이라 오버로딩이 가능하다. 함수의 일종이라 디폴트 값을 선언해줄 수 있다. 생성자를 사용하면 클래스를 이용하여 객체를 생성할 때, 객체의 생성과 동시에 초기화가 되게 할 수 있다. #include using namespace std; class MyClass { private: int num; public: MyClass(int n) // 생성자!!!! { num = n; } void ShowNum() { cout
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bwKC3n/btsFQS1RJAX/HntEGh3gOn95Ehe790APM0/img.png)
x와 y 에 대한 점을 나타내는 Myclass라는 클래스가 있다고 하자. 보통 생성자를 통하여 값을 전달받아 사용하는 방식으로 코드를 작성하면 아래와 같을 것이다. #include using namespace std; class Myclass { private: int x; int y; public: Myclass(int xpos, int ypos) { x = xpos; y = ypos; } void ShowPoint() const { cout
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/mvFRR/btsFQfJRqLJ/KRMkz8MUG7MGnzYPymzmx1/img.png)
문제 문제 04-3의 문제 2를 통해서 NameCard 클래스를 정의하였다. 그런데 이 클래스도 생성자 내에서 메모리 공간을 동적 할당하기 때문에 복사 생성자가 필요한 클래스이다. 이에 복사 생성자를 적절히 정의해보기 바라며, 복사 이후에 문제가 발생하지 않음을 다음 main 함수를 통해서 확인하기 바란다. [main 함수의 예] int main(void){ NameCard manClerk("Lee", "ABCEng","010-1111-2222",COMP_POS::CLERK); NameCard copy1=manClerk; NameCard manSENIOR("Hong","OrangeEng","010-3333-4444",COMP_POS::SENIOR); NameCard copy2=manSENIOR; copy..