explicit : 명시적 호출만 허용


#include <iostream>
using namespace std;

class AAA
{
public:
    explicit AAA(int n){
        cout << "explicit example" << endl;
    }
};

int main(void)
{
    //AAA ex1=10; 이것은 C 스타일로 묵시적으로 다음 줄의 C++ 형태로 변경되서 실행된다.
    AAA ex1(10);


    return 0;


//AAA ex1=10; 이것은 C 스타일로 묵시적으로 다음 줄의 C++ 형태로 변경되서 실행된다. 따라서 생성자에 explicit 키워드가 있으므로 AAA ex1=10;는 컴파일 에러가 발생한다.

'프로그래밍 > C++' 카테고리의 다른 글

상속의 이해  (0) 2014.02.06
생성자 (Constructor)  (0) 2014.02.06
복사 생성자  (0) 2013.09.06
두 개의 Circle 클래스를 기반으로 한 Ring 클래스 생성  (0) 2013.08.22
난수 사용하기  (0) 2013.07.25
참조자와 함수의 호출관계  (0) 2013.07.24
new & delete 기본 사용법  (0) 2013.07.23

두 개의 Circle 클래스를 기반으로 한 Ring 클래스 생성


정보 은닉과 캡슐화에 관련되어 있다.


#include <iostream>

using namespace std;


class Circle1 //내측 원

{

private :

int xpos;

int ypos;

int radius1;


public :

void Init(int x, int y, int r) //정보 은닉

{

xpos = x;

ypos = y;

radius1 = r;

}


void ShowInInfo() const

{

cout << "반지름: " << radius1 << endl << '[' << xpos << ',' << ypos << ']' <<endl;

}

};


class Circle2 //외측 원

{

private :

int xpos;

int ypos;

int radius2;


public :

void Init(int x, int y, int r)

{

xpos = x;

ypos = y;

radius2 = r;

}


void ShowOutInfo() const

{

cout << "반지름: " << radius2 << endl << '[' << xpos << ',' << ypos << ']' <<endl;

}

};


class Ring

{

private :

Circle1 Inner;

Circle2 Outter;

public :

void Init(int x1, int y1, int z1, int x2, int y2, int z2)

{

Inner.Init(x1,y1,z1); //private 멤버 변수에 직접 접근은 불가능하지만 이렇게는 가능하다.

Outter.Init(x2,y2,z2);

}

void ShowRingInfo() const //나름대로 캡슐화

{

cout << "내측 원의 정보..." << endl;

Inner.ShowInInfo();

cout << "외측 원의 정보..." << endl;;

Outter.ShowOutInfo();

}

};


int main(void)

{

Ring ring;

ring.Init(1,1,5,2,2,8);

ring.ShowRingInfo();

return 0;

} 


'프로그래밍 > C++' 카테고리의 다른 글

생성자 (Constructor)  (0) 2014.02.06
복사 생성자  (0) 2013.09.06
explicit 예제  (0) 2013.09.06
난수 사용하기  (0) 2013.07.25
참조자와 함수의 호출관계  (0) 2013.07.24
new & delete 기본 사용법  (0) 2013.07.23
포인터와 참조자  (0) 2013.07.23

난수 사용하는 방법


#include <iostream>

#include <cstdlib>

#include <ctime>

using namespace std;


int main()

{

srand(time(NULL));


cout << rand()%10 << endl;


return 0;

}


+ Recent posts