2013-06-07 1 views
-1

Struct에서 데이터에 액세스하고 C++에서 클래스의 데이터에 액세스하는 데 실행 시간에 차이가 있는지 궁금합니다. 필자가 현재 이해하고있는 구조체는 클래스이지만 멤버 함수는 없습니다. 차이점이 있음을 암시하는 것으로 보이는 구조체보다 오브젝트를 사용하여 훨씬 느리게 실행되는 코드가 있지만 내 직감으로 인해 큰 차이가 없어야한다는 사실을 알기 때문에 혼란 스럽습니다.구조체 대 객체, C++의 데이터 액세스 속도

+0

개체의 의미는 무엇입니까? 너는 수업을 의미하니? 왜냐하면 당신이 그렇다면 구조체와 클래스 사이에 C++에 차이가 없다는 것을 제외하면 구조체 멤버는 기본적으로 public 인 것입니다. –

+0

질문이 약간 혼란 스럽습니다. struct의 멤버가 기본적으로 public이지만 private 클래스입니까? Object가 무엇을 의미합니까? 클래스의 객체? – taocp

+0

다른 기본 액세스와 동일합니다. 어쩌면 스택과 힙에있는 객체를 생각하고 있을까요? – Inisheer

답변

2

다른 실행 시간의 문제가 왜 발생할지 모르겠습니다.
Structs and Classes, 저는 여러분이 객체에 의해 의미하는 것을 가정하고 있습니다. 구조체가 public으로 설정되어 있고 클래스가 private로 기본 설정되어있는 것과 사실상 동일합니다.
So to sum it up there should be no difference functionally or speed wise
편집 : 사람들이 수업은 더 많은 기능을 가지고있는 반면 POD의에 대한 구조체를 사용하는 경향이 있기 때문에 더 빨리 실행 구조체가 발생할 수 있습니다 이유는 그러나 이것은 실제 구조체와 클래스

1

는 ++ 클래스 유형에 속하는 객체의 3 종류가 있습니다 :

  • 구조체
  • 클래스
  • 조합
,

그들은 기능적으로 서로 동일하므로 더 많이 확장하고 구현에 대해 더 자세히 알려야합니다.

+0

유니온은 구문 상 유사하지만 의미 상 매우 다릅니다. – aschepler

+0

@aschepler 그건 표준이 말하는 것, 클래스 객체의 3 가지 유형, 유니온이 포함되어 있는지, 어떻게 작동하는지 또는 그들이 제공하는 것이 다른 이야기인지, 구조체와 클래스간에 차이가 있는지, 같은 정의에 속한다는 것을 의미하지는 않습니다 클래스 객체의 – user2384250

2

구조체 이건 클래스 이건 상관없이 모두 같습니다. (어떤 인스턴스가 기술적으로 객체이기 때문에 객체로 무엇을 의미하는지 가정합니다. 원시 형, 구조체 또는 클래스), 컴파일러는 멤버에 액세스하기 위해 동일한 오프셋 계산을 수행합니다. 이 둘의 차이는별로 없습니다. 구문에 따라 다르게 보일 수도 있지만 C++ 호출 someObject.someMethod()은 구성원 호출이 실제로 테이블 아래에있는 C 버전 SomeObject_someMethod(&someObject)과 동일합니다. 그러나 이것은 멤버 메서드에만 관련이 있으며 클래스 및 구조체 멤버에 대한 액세스 속도는 실질적으로 동일합니다.