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

20150528 - 20번 엄민웅 C#, C++(클래스 생성자 소멸자)

by 알 수 없는 사용자 2015. 5. 28.
728x90
반응형

(으흠 지난번에 승규 선생님왈 제 바뀐 번호가 19번이라던디 으흠 ㅠㅠ 그냥 나 20번 할래 ,,, )

잡소리 집어두고 업무일지 시작합니당. ^^


닷넷 프레임워크(.NET Framework, 이전 이름: 닷넷)는 마이크로소프트에서 개발한 윈도 프로그램 개발 및 실행 환경이다. 네트워크 작업, 인터페이스 등의 많은 작업을 캡슐화하였고, 공통 언어 런타임(Common Language Runtime)(CLR)이라는 이름의 가상 머신 위에서 작동한다.

- 자료출처 위키백과 -


C# 실습

지난시간 작성한 사칙연산 프로그램을

1.Console (method활용)

2. 주요핵심 로직을 클래스 라이브러리(.dll)


dll을 활용해서 console / winform / webform 만들어 보기.


콘솔 형태로 짜여진 프로그램에서 

밑에 있는 더하기 빼기 곱하기 나누기 매소드를 빼서 클래스라이브러리에 넣어둔다.

(사진 클릭하면 크게 보입니다 ^^;)

(원래라면 public static 을 일일이 하나하나 다 걸어주는 저런식으로 짜면 안된다고 한다.)

다음 클래스라이브러리를 만든 프로잭트에서 새로 프로잭트를 추가한다.



WindowsFormsApplication를 생성하여 toolbox에서 Textbox 3개와 button 4개를 꺼내어 디자인을 작성후 class에 메소드를 사용하기 위해 쏠루션 익스플로러에 References를 추가해주고  코드작성란에 using opLib; (클래스프로잭트 네임)을 넣은후 각 버튼 소스 코드 또한 작성한다.



web폼 또한 마찮가지로 New project해서 ASP.NET Web Application을 추가 해준후 win폼에서 했던 방법과 마찮가지로 디자인을 그리고 References추가와 각버튼에 해당하는 소스코드를 작성한다.

콘솔 모드로 작성시에도 References와 using을 해준 다음 아래와 같이 소스 코드를 작성하면 된다.

프로그램 컴파일 실행시에는 Set as StartUp Project을 클릭한 프로잭트가 컴파일 된다.

opLib20150528.zip

교과서 학습 p58.~ (데이터)



C++ 실습 

스코프 연산자 

#include<iostream>

using namespace std;

int A = 100;

int main()
{
    int A = 200;
    cout << A << endl;

    cout << ::A << endl;
    //스코프 연산자 앞에 아무것도 안붙이면 전역의 의미를 가진다.


    return 0;

}

p57. ex)

#include<iostream>

#include<stdio.h>

using namespace std;

class Time
{
    private :
        int hour;
        int min;
        int sec;
    public :
        void SetTime(int h, int m, int s)
        {
            hour = h;
            min = m;
            sec = s;
        }
        void OutTime()
        {
            printf("현제시간은 %d시%d분%d초 입니다 \n", hour, min, sec);
        }

};

int main()
{
    Time Now;

    Now.SetTime(123040);
    Now.OutTime();

    return 0;

}

bool 형

#include<iostream>

using namespace std;

int main()
{
    bool A;

    cout << sizeof(A) << endl; //bool형은 1byte다
    A = true;
    cout << A << endl;
    cout << true << endl;
    cout << false << endl;
    A = 2//정설로는 경고나 애러 떠야한다.
    cout << A << endl;


    return 0;
}

===========================================================


#include<iostream>


using namespace std;

class smart
{
    public :
        int iNum;
        void test(void)
        {
            cout << "Test" << endl;
        }
  //private : 걸어 놓으면 생성자 생산 못함 에러뜸
        smart(int A)
        {
            test();
            iNum = A;
        }

        smart(int A, int B)
        {
            test();
            iNum = A + B;
        }//다양한 여러 생성자들을 만들수 있다 단 인자들이 달라야 한다.

        ~smart()
        {
            cout << iNum << "소멸자 호출됨" << endl;
        }//객체가 지워질때 호출 된다.메인에서 리턴하기 바로직전
        //소멸자는 하나밖에 만들지 못한다. stack영역처럼 제일 최근 만든아이부터 소멸.

    private ://특정 생성자를 쓰고만들거나 못쓰게 만들때 private걸어 사용한다.
        smart()//생성자 : 반환형 없음. 만들때 마다 딱한번 실행된다.
        {
            test();
            iNum = 0;
        }//인자가 없는 생성자: 디폴트 생성자. 생성자도 다형성 지원한다.
};

class smart2
{
    public :
        int iNum;
    //생성자를 하나도 안만들때 컴파일러가 디폴트 생성자를 자동으로 만들어준다.
    //생성자를 하나라도 만들경우엔 디폴트 생성자를 만들어줘야 한다.
    //그래야 기본형으로 만들수 있다. 객체는 반드시 하나이상 생성자가 존재한다.
        smart2(int A)
        {
            cout << "smart2" << endl;
        }
};

int main()
{
    smart(700);//객체 이름은 없고 생성자만 구동 된다. 접근불가능한 아이.임시객체
    //그자리에서 만들어져서 그자리에서 소멸한다.

    //smart obj1;
    smart obj2(100);//smart에 인자가 있는 생성자 호출하는 방법
    smart obj3(100200);
    //obj1.test();

    //cout << obj1.iNum << endl;
    cout << obj2.iNum << endl;
    cout << obj3.iNum << endl;

    smart2 obj4(100);
    //smart2 obj5; //생성자를 하나도 안만들거나 디폴트 생성자도 따로 만들어줘야 애러안뜸

        cout << "----------------------------------------------" << endl;
    return 0;
}


생성자와 소멸자


교과서 학습 p48.~ (클래스 생성자 소멸자)


728x90