2013-12-22 2 views
1

사람들이 코드를 작성하기 전에 classespublic을 선언하는 많은 양의 코드에 나타났습니다. 이것은 선호입니까, 아니면 더 의미가 있습니까? 그것은 이라는 기본 매개 변수가 public이고 정확하게 어떤 클래스가 수행하는 것인가에 대해서는 불필요한 것 같습니다. (읽은 그대로).클래스의 기본 보안 매개 변수

코드 예제

class box 
{ 
public: 
void setParam(int x, int y) { . . . } 
int getWidth(){ . . . } 
int getHeight(){ . . . } 
private: 
int width, height; 
} 

는 구조체에 공개 선언하지 않고 수행 할 수 없습니다.

+3

사용하여 같은 일부 사람들이'만 POD 유형 struct'. 필자는'public :'줄을 저장하는 것을 선호한다. – chris

답변

2

일반적으로 기술적 인 이유로 인하여 규칙/의미의 문제가 있습니다.

근거는 struct들 POD 사용법, 헬퍼 데이터 구조 "데이터 페이로드"S, 펑 등을 위해 예약되어 일반적 class ES는 통상 몇 가지 유형을 존중해야 비 단순 작업을 캡슐화 유형 반면 클래스 불변성. 다음과 같을 수 클래스처럼 보이는

2

struct :

struct Rect 
{ 
int x, y, w, h; 
}; 

그것은 바로이없는 종과 경적을 가진 간단한 POD 형으로 의도 독자에게 전달한다. 다른 한편으로는, 당신의 예제에는 액세스하려고하는 메소드가 있습니다.이 메소드는, private 멤버를 취득 해 설정하는 것만으로 충분하지 않은 것처럼 보입니다. 당신은 대중에게 공개 할 수도 있습니다. 내 댓글의


예 :

class box 
{ 
    Rect _surface; 
public: 
    explicit box(Rect surface) : _surface(surface) 
    { 
    if (surface.w <= 0 || surface.h <= 0) throw bad_dimensions(); 
    } 
}; 
+0

데모 수업이었습니다. 나는 길이가 더 작을 수 있도록 여분의 코드를 제공하지 않았다. 그러나 그렇습니다. 쓰여졌 듯이 모든 반원이 공개 될 수 있습니다. 그러나 너비와 높이를 1보다 크게하고 싶다면 어떻게해야합니까? 그러면 기능이 만족 스러울 것입니다. – Andrew

+0

@ Lemony-Andrew 그렇다면 상자 클래스는 값이 1보다 큰지 확인하는 내부 'Rect'을 가질 수 있습니다. 코드를 반복 할 필요가 없습니다. –

+0

C++ 대화방에서이 문제에 대해 논의하고 싶습니까? 나는 당신이 이것에 대해 무엇을 말해야하는지에 대해 더 많이 알고 싶습니다. * 너 무슨 뜻인지 궁금하다. * – Andrew