목록전체 글 (283)
Minwoo Dev.
문제 예제 LinkedRead.c 에 익숙해지는 가장 빠르고도 흥미로운 길은 예제를 조금 수정해 보는 것이다. 따라서 예제를 조금 수정해 볼 기회를 제공하고자 한다. 예제 수정을 위한 주제는 다음과 같다. 새 노드를 연결 리스트의 꼬리가 아닌 머리에 추가한다. LinkedRead.c #include #include typedef struct _node { int data; struct _node *next; } Node; int main(void) { Node *head = NULL; Node *tail = NULL; Node *cur = NULL; Node *newNode = NULL; int readData; while (1) { printf("자연수 입력 : "); scanf("%d", &readD..
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
소멸자(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]; ..
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..
Java 는 기본적으로 객체지향 프로그래밍 언어이다. 객체지향 프로그래밍(OOP, Object-Oriented Programming) 클래스라는 묶음 안에 해당 프로그램의 속성(변수)와 기능(함수)를 넣어두고 사용하는 프로그래밍 방식이다. 강아지라는 동물에 대해서 특징을 생각해 보자. 속성, 즉 수치로 나타낼 수 있는 값은 키, 배고픈 정도, 이름 등등이 있을 것이고, 할 수 있는 행동(기능)은 짖기, 소개하기, 밥달라하기가 있을 것이다. 아래 코드를 보자, 우리가 기본적으로 사용하는 방식인 절차지향 프로그래밍이다. package test; public class DogWithoutOop { public static void main(String[] args) { int height = 50; Strin..
디폴트 생성자(Default Constructor) #include using namespace std; class MyClass { private: int num; public: // 생성자 없음!!!! void SayHi() { cout
생성자(Constructor) 생성자는 객체 생성 시 호출된다 함수의 일종이라 오버로딩이 가능하다. 함수의 일종이라 디폴트 값을 선언해줄 수 있다. 생성자를 사용하면 클래스를 이용하여 객체를 생성할 때, 객체의 생성과 동시에 초기화가 되게 할 수 있다. #include using namespace std; class MyClass { private: int num; public: MyClass(int n) // 생성자!!!! { num = n; } void ShowNum() { cout
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
문제 문제 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..