본문 바로가기
코스웨어/14년 스마트컨트롤러

[10.08 업무일지] 2번 고한솔

by 알 수 없는 사용자 2014. 10. 8.
728x90
반응형
동적할당
- malloc으로 동적할당할 경우 free가 아닌 delete로 메모리를 해제하면 안됨
- new를 free로 해제해도 안된다.


P = new smart; 으로 동적할당할 경우 생성자도 함께 실행되는데 이 때 실행되는 생성자는 Defult생성자이다.
P = new smart(3); 으로 동적할당할 경우 Defult생성자가 아닌 smart(int iNum) 생성자가 호출된다. (인자값에따라)


JAVA
Integer A; // class 객체가 생성됨
int A; // 기본자료형 변수
- JAVA에서는 -> 를 쓰지 않고 .만 사용한다. (기본 포인터 개념이 없기 때문에)




Cpp 초기화
- int iNum = 100; 과 int iNum(100)의 명령어는 같다. 둘중 무엇으로 초기화를 하든 iNum은 100의 값을 가진다.

- Class함수의 이름뒤, 중괄호 앞에 :을 넣고 명령을하면 생성자가 구동될 때, 함수의 중괄호 내용 실행전에 실행된다. 
     - iNum(100)의 초기화는 에러없이 실행되지만 iNum = 100은 에러가 뜸, ( )로 명령해주어야함

#include <iostream>

using namespace std;

class Point
{
                 private:
                                 int x;
                                 int y;

                 public:
                                Point()
                                {
                                                x = 0;
                                                y = 0;

                                                cout  << "Point_Defult 생성자 호출" << endl;
                                }
                
                                Point( int x, int y)
                                {
                                                Point :: x = x;
                                                Point :: y = y;

                                                cout  << "Point 생성자 호출" << endl;
                                }

                                ~Point()
                                {
                                                cout  << "Point 소멸자 호출" << endl;
                                }

                                 void Print()
                                {
                                                cout << "[" << x << ", " << y << "]\n";
                                }
};

class Rectangle
{
                 public:
                                Point upLeft;          // Point클래스 객체
                                Point lowRight;    

                                 const int iNum;     

                 public:
                                Rectangle()
                                 // 생성자가 구동될때 제일 먼저 실행
                                :iNum(100)                              // iNum = 100 과 같은 명령어
                                {
                                                cout  << "Rectangle_Defult 생성자 호출" << endl;
                                }

                                Rectangle( int x1,int y1,int x2, int y2)
                                 // 생성자가 구동될때 함수의 중괄호안 내용이 실행되기전 실행된다.
                                 //각각 객체에 값을 넣어준다.
                                :upLeft(x1, y1), lowRight(x2, y2), iNum(100)
                                {
                                                cout  << "Rectangle 생성자 호출" << endl;
                                }

                                ~Rectangle()
                                {
                                                cout  << "Rectangle 소멸자 호출" << endl;
                                }

                                 void Print()
                                {
                                                upLeft.Print();
                                                lowRight.Print();
                                }
};

int main()
{
                Rectangle Obj1;     // Defult생성자가 호출되며 객체를 생성
                Obj1.Print();           // 0,0,0,0 출력

                Rectangle Obj2(1, 2, 3, 4);    // 4개의 인자값을 가진 생성자 호출
                Obj2.Print();           // 1, 2, 3, 4 출력

                cout << "iNum : " << Obj1.iNum << endl;

                 int iNum(200);                        // 에러없이 int iNum = 200; 과 똑같이 실행이 된다.
                 int * iP(&iNum);   // int * iP = &iNum;
                 char * str("test" ); // char * str2 = "test";
                
                 return 0;
}




생성자, 소멸자

#include <iostream>

using namespace std;

class Point
{
                 private :
                                 int x;
                                 int y;

                 public :
                                Point()
                                {
                                                x = 0;
                                                y = 0;

                                                cout  << "Point_Defult 생성자 호출" << endl;
                                }
                
                                Point( int x, int y)
                                {
                                                Point :: x = x;
                                                Point :: y = y;

                                                cout  << "Point 생성자 호출" << endl;
                                }

                                ~Point()
                                {
                                                cout  << "Point 소멸자 호출" << endl;
                                }

                                 void Print()
                                {
                                                cout << "[" << x << ", " << y << "]\n" ;
                                }
};

void test(Point Obj)
{
                Point Obj1;

                Obj1 = Obj;
}

int main()
{
                Point ObjA;

                test(ObjA);

                 return 0;
}








-오후수업-








이렇게 설정한뒤에 옆사람 시리얼이랑 연결


아무 송수신 없을때







옆사람한테 수신왔을 때


옆사람 송신화면






내 매크로 송신했을 때


옆사람이 내 송신을 수신한 화면


시리얼 통신 포트 


728x90