C ++에서 구조체와 클래스의 차이점은 무엇입니까?
이 질문은 이미 C # /. Net의 맥락에서 요청되었습니다 .
이제 C ++에서 구조체와 클래스의 차이점을 배우고 싶습니다. OO 디자인에서 기술적 차이점과 하나를 선택해야하는 이유에 대해 논의하십시오.
나는 명백한 차이점으로 시작할 것이다.
- 지정하지 않는 경우
public:
나private:
, 구조체의 멤버는 기본적으로 공용; 클래스 멤버는 기본적으로 비공개입니다.
C ++ 사양의 모호한 부분에서 다른 차이점이있을 것이라고 확신합니다.
클래스와 구조체의 까다로운 두 번째 차이점을 잊어 버립니다.
표준을 인용하십시오 (C ++ 98에서 C ++ 11의 11.2.2).
부재에 접근 지정자 파생 된 클래스가 선언되는 경우베이스 클래스, 공중 가정 구조체 및 개인이 클래스가 선언 될 때 가정 클래스 .
그리고 완전성을 위해 클래스와 구조체의 더 널리 알려진 차이점은 (11.2)에 정의되어 있습니다.
키워드 class 로 정의 된 클래스의 멤버는 기본적으로 비공개 입니다. 키워드 struct 또는 union 로 정의 된 클래스의 멤버는 기본적으로 공개 입니다.
추가 차이점 : 키워드 class
를 사용하여 템플릿 매개 변수를 선언 할 수 있지만 struct
키워드를 사용할 수는 없습니다.
인용 된 C ++ FAQ를 ,
[7.8] 키워드 구조체와 클래스의 차이점은 무엇입니까?
구조체의 멤버와 기본 클래스는 기본적으로 public이고 클래스에서는 기본적으로 private입니다. 참고 : 기본 클래스에 의존하지 않고 기본 클래스를 명시 적으로 공개, 개인 또는 보호로 설정해야합니다.
구조와 클래스는 기능적으로 동일합니다.
좋아, 그 삐걱 거리는 깨끗한 테크노 대화의 충분. 감정적으로, 대부분의 개발자는 클래스와 구조체를 강력하게 구분합니다. 구조체는 단순히 캡슐화 또는 기능 방식이 거의없는 열린 비트 더미처럼 느껴집니다. 클래스는 지능적인 서비스, 강력한 캡슐화 장벽 및 잘 정의 된 인터페이스를 갖춘 살아 있고 책임감있는 사회 구성원입니다. 그것이 대부분의 사람들이 이미 가지고있는 의미이므로, 메소드가 거의없고 공개 데이터가있는 클래스가있는 경우 struct 키워드를 사용해야합니다 (이러한 것들은 잘 설계된 시스템에 존재합니다!). 그렇지 않으면 클래스를 사용해야합니다 예어.
C ++의 기원과 C와의 호환성을 기억할 가치가 있습니다.
C에는 구조체가 있고 캡슐화 개념이 없으므로 모든 것이 공개됩니다.
기본적으로 공개되는 것은 객체 지향 접근 방식을 취할 때 일반적으로 나쁜 생각으로 간주되므로 기본적으로 OOP에 도움이되는 C 형식 (C에서 OO를 수행 할 수는 있지만 도움이되지는 않음)을 만드는 경우 C ++ (원래 "C With Classes")의 아이디어는 기본적으로 멤버를 비공개로 만드는 것이 좋습니다.
반면, Stroustrup이 struct
기본적으로 개인 을 유지 하기 위해 의미를 변경 한 경우 호환성이 떨어질 수 있습니다 (표준이 다를 때만 큼 자주 적용되지는 않지만 모든 유효한 C 프로그램도 유효한 C ++ 프로그램입니다. C ++에 발판을 마련하는 데 큰 영향을 미쳤습니다).
따라서 새로운 키워드 class
는 구조체와 똑같지 만 기본적으로 비공개로 도입되었습니다.
C ++가 역사없이 처음부터 시작 되었다면, 아마도 하나의 키워드 만 가질 것입니다. 또한 영향을 미치지 않았을 것입니다.
일반적으로 사람들은 C에서 구조체가 사용되는 방식과 같은 일을 할 때 구조체를 사용하는 경향이 있습니다. 공용 멤버, 생성자 없음 (조합이 아닌 한 클래스와 마찬가지로 구조체에 생성자를 가질 수 있지만 사람들은하지 않는 경향이 있음), 가상 메서드 등이 없습니다. 사람들에게 기계를 가르치기 위해 코드를 읽는 사람들 (또는 우리는 어셈블리와 원시 VM opcode를 고수 할 것) 그것을 고수하는 것이 좋습니다.
클래스 멤버는 기본적으로 비공개입니다. Struct의 멤버는 기본적으로 공개입니다. 그 외에 다른 차이점은 없습니다. 이 질문 도 참조하십시오 .
C ++ 프로그래밍 언어 의 Stroustrup에 따르면 :
사용하는 스타일은 상황과 취향에 따라 다릅니다. 나는 일반적으로
struct
모든 데이터를 공개하는 클래스 에 사용하는 것을 선호합니다 . 이러한 클래스는 "정확한 유형이 아니라 데이터 구조"라고 생각합니다.
기능적으로는 공공 / 개인 이외의 차이가 없습니다
STRUCT는 구조 스펙에 따라 주어진 메모리 청크를 분할하는 추상 데이터 유형의 유형입니다. 구조는 종종 파일에 그대로 쓸 수 있으므로 구조는 파일 직렬화 / 역 직렬화에 특히 유용합니다. (즉, 구조체에 대한 포인터를 가져 와서 SIZE 매크로를 사용하여 복사 할 바이트 수를 계산 한 다음 구조체 안팎으로 데이터를 이동하십시오.)
클래스는 정보 숨기기를 보장하는 다른 유형의 추상 데이터 유형입니다. 내부적으로 다양한 가공, 방법, 온도 변수, 상태 변수가있을 수 있습니다. 클래스를 사용하려는 모든 코드에 일관된 API를 제공하는 데 사용됩니다.
실제로 구조체는 데이터에 관한 것이고 클래스는 코드에 관한 것입니다.
그러나 이들은 단지 추상화 일 뿐이라는 것을 이해해야합니다. 클래스처럼 보이는 구조체와 구조체처럼 보이는 구조체를 만드는 것은 완벽하게 가능합니다. 실제로 초기 C ++ 컴파일러는 C ++ 코드를 C로 변환하는 프리 컴파일러 일뿐입니다. 따라서 이러한 추상화는 컴퓨터 자체의 자산이 아니라 논리적 사고에 도움이됩니다.
각각은 다른 유형의 추상화라는 사실 외에도 클래스는 C 코드 명명 퍼즐에 대한 솔루션을 제공합니다. 같은 이름으로 둘 이상의 함수를 노출시킬 수 없으므로 개발자는 _ () 패턴을 따르 곤했습니다. 예 : mathlibextreme_max (). API를 클래스로 그룹화하면 유사한 함수 (여기서는 "메소드"라고 함)를 그룹화하여 다른 클래스의 메소드 이름 지정으로부터 보호 할 수 있습니다. 이를 통해 프로그래머는 코드를보다 잘 구성하고 코드 재사용을 높일 수 있습니다. 이론 상으로는 적어도.
1) 클래스 멤버는 기본적으로 비공개이며 struct 멤버는 기본적으로 공개입니다.
예를 들어 프로그램 1은 컴파일에 실패하고 프로그램 2는 정상적으로 작동합니다.
// Program 1
#include <stdio.h>
class Test {
int x; // x is private
};
int main()
{
Test t;
t.x = 20; // compiler error because x is private
getchar();
return 0;
}
Run on IDE
// Program 2
#include <stdio.h>
struct Test {
int x; // x is public
};
int main()
{
Test t;
t.x = 20; // works fine because x is public
getchar();
return 0;
}
2) 클래스 / 구조체에서 구조체를 파생시킬 때 기본 클래스 / 구조체의 기본 액세스 지정자는 공개입니다. 클래스를 파생시킬 때 기본 액세스 지정자는 개인용입니다.
예를 들어 프로그램 3은 컴파일에 실패하고 프로그램 4는 정상적으로 작동합니다.
// Program 3
#include <stdio.h>
class Base {
public:
int x;
};
class Derived : Base { }; // is equilalent to class Derived : private Base {}
int main()
{
Derived d;
d.x = 20; // compiler error becuase inheritance is private
getchar();
return 0;
}
Run on IDE
// Program 4
#include <stdio.h>
class Base {
public:
int x;
};
struct Derived : Base { }; // is equilalent to struct Derived : public Base {}
int main()
{
Derived d;
d.x = 20; // works fine becuase inheritance is public
getchar();
return 0;
}
유일한 차이점은 클래스와 구조체의 기본 상속이라는 것인데, 당연히 개인과 공용입니다.
사양에 없습니다. 주요 차이점은 2 년 안에 코드를 읽을 때 프로그래머가 기대하는 것입니다. 구조체는 종종 POD로 간주됩니다. Structs는 객체를 정의하는 것 이외의 목적으로 유형을 정의 할 때 템플릿 메타 프로그래밍에도 사용됩니다.
클래스를 사용하도록 구성된 레거시 앱을 업데이트 한 경우 다음과 같은 문제가 발생할 수 있습니다.
오래된 코드에는 구조체가 있고 코드가 정리되었으며 클래스로 변경되었습니다. 가상 함수 또는 두 개가 새로 업데이트 된 클래스에 추가되었습니다.
가상 함수가 클래스에있는 경우 내부적으로 컴파일러는 함수를 가리 키기 위해 클래스 데이터에 대한 추가 포인터를 추가합니다.
이것이 이전 레거시 코드를 어기는 방법은 이전 코드 어딘가에서 memfill을 사용하여 구조체를 지워서 모두 0으로 지우면 여분의 포인터 데이터가 스톰됩니다.
- 구조체의 멤버는 기본적으로 public이고 클래스의 멤버는 기본적으로 private입니다.
- 다른 구조 또는 클래스의 구조에 대한 기본 상속은 public입니다. 다른 구조 또는 클래스의 구조에 대한 기본 상속은 private입니다.
class A{
public:
int i;
};
class A2:A{
};
struct A3:A{
};
struct abc{
int i;
};
struct abc2:abc{
};
class abc3:abc{
};
int _tmain(int argc, _TCHAR* argv[])
{
abc2 objabc;
objabc.i = 10;
A3 ob;
ob.i = 10;
//A2 obja; //privately inherited
//obja.i = 10;
//abc3 obss;
//obss.i = 10;
}
이것은 VS2005에 있습니다.
템플릿과 관련하여 또 다른 주요 차이점이 있습니다. 내가 아는 한 템플릿을 정의 할 때 클래스는 사용할 수 있지만 구조체는 사용할 수 없습니다.
template<class T> // OK
template<struct T> // ERROR, struct not allowed here
키워드
class
로 정의 된 클래스의 멤버는private
기본적으로입니다. 키워드struct
(또는union
)로 정의 된 클래스의 멤버는public
기본적으로입니다.기본 클래스에 대한 액세스 지정자의 유무에
public
때 가정 유도 클래스를 선언struct
하고private
, 클래스가 선언 될 때 추정된다class
.을 선언 할 수
enum class
있지만을 ( 를) 선언 할 수는 없습니다enum struct
.사용할 수는
template<class T>
있지만 사용할 수는 없습니다template<struct T>
.
또한 C ++ 표준을 사용하면 형식을로 선언 한 다음 형식을 선언 할 때 struct
사용할 수 class
있으며 그 반대도 가능합니다. 또한, std::is_class<Y>::value
인 true
Y는 것에 대한 struct
및를 class
되지만 false
대한 enum class
.
다음은 좋은 설명입니다. http://carcino.gen.nz/tech/cpp/struct_vs_class.php
따라서 C ++에서 구조체는 기본적으로 구조체의 멤버를 공개적으로 표시하지만 클래스 멤버는 기본적으로 개인 가시성을 갖는 것을 제외하고 클래스와 동일합니다.
컨벤션 일뿐입니다. 간단한 데이터를 보유하기 위해 Structs를 만들 수 있지만 나중에 멤버 함수와 생성자를 추가하여 시간을 발전시킵니다. 반면에 공개 이외의 것을 보는 것은 드문 일입니다.
ISO IEC 14882-2003
9 개 강의
§삼
구조는 class-key로 정의 된 클래스입니다
struct
. 멤버와 기본 클래스 (10 항)는 기본적으로 공개되어 있습니다 (11 항).
다른 답변은 개인 / 공용 기본값을 언급했지만 (구조체는 클래스입니다. 두 가지 다른 항목이 아니라 동일한 항목을 정의하는 두 가지 방법입니다).
주목할만한 점은 (특히 관리자가 "관리되지 않는"C ++를 언급하기 때문에 MSVC ++를 사용할 가능성이 높기 때문에) 클래스가 선언 class
되고 정의 된 경우 struct
(또는 다른 방법으로 ) Visual C ++가 특정 상황에서 불평한다는 것입니다. ), 표준에 따르면 완벽하게 합법적입니다.
. 클래스에서는 기본적으로 모든 멤버가 비공개이지만 구조적 멤버는 기본적으로 공개입니다.
구조체의 생성자 및 소멸자와 같은 용어는 없지만 제공하지 않으면 클래스 컴파일러의 경우 기본값을 만듭니다.
빈 클래스의 크기는 1 바이트이므로 빈 구조의 크기는 0 바이트입니다. 구조체 기본 액세스 유형은 공용입니다. 구조체는 일반적으로 데이터를 그룹화하는 데 사용해야합니다.
클래스 기본 액세스 유형은 개인이며 상속의 기본 모드는 개인입니다. 클래스는 데이터와 해당 데이터에서 작동하는 메서드를 그룹화하는 데 사용해야합니다.
간단히 말해, 규칙은 데이터를 그룹화하는 목적으로 struct를 사용하고 데이터 추상화 및 상속이 필요할 때 클래스를 사용하는 것입니다.
C ++ 구조에서 클래스와 클래스는 명시 적으로 역 참조되지 않는 한 값으로 전달됩니다. 다른 언어에서 클래스와 구조는 별개의 의미를 가질 수 있습니다. 객체 (클래스의 인스턴스)는 참조로 전달 될 수 있고 구조는 값으로 전달 될 수 있습니다. 참고 :이 질문과 관련된 의견이 있습니다. 대화에 추가하려면 토론 페이지를 참조하십시오.
다른 답변에 암시되어 있지만 명시 적으로 언급되지 않았습니다. 구조는 사용법에 따라 C 호환 가능합니다. 수업은 없습니다.
이것은 C 호환되고 싶은 헤더를 작성하는 경우 struct 이외의 옵션은 없습니다 (C 세계에서는 함수를 가질 수 없지만 함수 포인터를 가질 수 있음).
차이 class
와 struct
키워드 사이가 아닌 데이터 유형 사이의 차이입니다. 이 둘
struct foo : foo_base { int x;};
class bar : bar_base { int x; };
둘 다 클래스 유형을 정의합니다. 이 문맥에서 키워드의 차이점은 다른 기본 액세스입니다.
foo::x
공개적이고foo_base
공개적으로 상속bar::x
사적이며bar_base
사적으로 상속
수업은 소프트웨어 엔지니어링의 맥락에서만 의미가 있습니다. 데이터 구조와 알고리즘의 맥락에서 클래스와 구조체는 다르지 않습니다. 클래스의 멤버를 참조해야하는 규칙은 없습니다.
클래스가없는 많은 사람들과 함께 대규모 프로젝트를 개발할 때, 모든 사람들이 원하는 기능과 데이터를 사용하기 때문에 복잡한 결합 코드를 얻게됩니다. 클래스는 디커플링 및 재사용 코드를 향상시키기 위해 권한 제어 및 고유 기능을 제공합니다.
일부 소프트웨어 엔지니어링 원칙을 읽으면 수업 없이는 대부분의 표준을 쉽게 구현할 수 없습니다. 예를 들면 다음과 같습니다. http://en.wikipedia.org/wiki/SOLID_%28object-oriented_design%29
BTW, 구조체가 메모리의 크런치를 할당하고 여러 변수를 포함하는 경우 값 형식 변수는 구조체가 할당 된 위치에 값이 포함되어 있음을 나타냅니다. 대조적으로, 참조 형 변수의 값은 외부 적이며 포인터가 참조를 가지며 참조는 구조체가 할당 된 곳에 포함됩니다.
https://msdn.microsoft.com/en-us/library/ms229017%28v=vs.110%29.aspx struct 또는 class로 갈시기에 대한 지침으로이를 고려할 수 있습니다 .
√ 유형의 인스턴스가 작고 일반적으로 수명이 짧거나 다른 객체에 일반적으로 포함되는 경우 클래스 대신 구조체를 정의하십시오.
유형에 다음 특성이 모두없는 한 구조체를 정의하지 않아야합니다.
기본 유형 (int, double 등)과 유사한 단일 값을 논리적으로 나타냅니다.
인스턴스 크기는 16 바이트 미만입니다.
불변입니다.
자주 박스에 넣을 필요는 없습니다.
C ++에서 struct 와 class 키워드 의 차이점은 특정 복합 데이터 유형에 특정 지정자가없는 경우 기본적으로 struct 또는 union 은 데이터 숨기기를 고려하는 공용 키워드이지만 class는 프로그램 숨기기를 고려하는 개인 키워드라는 점입니다. 코드 또는 데이터. 항상 일부 프로그래머 는 데이터를 위해 구조체 를 사용 하고 코드를 위해 클래스 를 사용합니다. 자세한 내용은 다른 소스에 문의하십시오.
이러한 모든 요소 중에서 개념 클래스가 "구조"가 아닌 실제 개체를 표현하는 데 매우 적합하다고 결론을 내릴 수 있습니다. 클래스에 사용되는 OOP 개념이 실제 시나리오를 설명하는 데 매우 실용적이기 때문에 실제 시나리오를 쉽게 병합 할 수 있습니다. 예를 들어, 기본 상속은 구조체에 대해 공개이지만 실제 세계 에이 규칙을 적용하면 어리 석습니다. 그러나 클래스 기본 상속에서는 비공개이며 더 현실적입니다.
어쨌든, 내가 정당화 해야하는 것은 클래스가 훨씬 광범위하고 실제 적용 가능한 개념이지만 구조는 내부 조직이 열악한 기본 개념입니다 (이벤트는 OOP 개념을 따르지만 의미는 좋지 않습니다)
oops의 구조 키워드와 클래스 키워드의 주요 차이점은 구조에 공개 및 개인 멤버 선언이 없으며 데이터 멤버 및 멤버 함수를 보호, 공개, 비공개로 정의 할 수 있다는 것입니다.
다른 차이점을 발견했습니다. 클래스에서 생성자를 정의하지 않으면 컴파일러에서 생성자를 정의합니다. 그러나 구조체에서 생성자를 정의하지 않으면 컴파일러에서도 생성자를 정의하지 않습니다. 따라서 실제로 생성자가 필요하지 않은 경우에는 struct가 더 나은 선택입니다 (성능 팁). 내 영어 실력이 미안해
클래스는 참조 유형이고 구조는 값 유형입니다.
클래스가 참조 유형이라고 말하면
기본적으로 인스턴스 변수의 주소가 포함됩니다.
예를 들면 다음과 같습니다.
Class MyClass
{
Public Int DataMember; //By default, accessibility of class data members
//will be private. So I am making it as Public which
//can be accessed outside of the class.
}
주요 메소드
에서이 클래스에 대한 메모리를 할당
하고 그 기본 주소를 MyClass 유형 변수 (_myClassObject2)에 저장하는 새로운 연산자를 사용 하여이 클래스의 인스턴스를 만들 수 있습니다 .
Static Public void Main (string[] arg)
{
MyClass _myClassObject1 = new MyClass();
_myClassObject1.DataMember = 10;
MyClass _myClassObject2 = _myClassObject1;
_myClassObject2.DataMember=20;
}
위 프로그램에서 MyClass _myClassObject2 = _myClassObject1; 명령은 MyClass 유형의 두 변수가
- myClassObject1
- myClassObject2
동일한 메모리 위치를 가리 킵니다.
기본적으로 동일한 메모리 위치를 동일한 유형의 다른 변수에 할당합니다.
따라서 MyClass 객체 유형 중 하나에서 변경 한 내용이
모두 동일한 메모리 위치를 가리 키기 때문에 다른 유형에 영향을 미칩니다 .
"_myClassObject1.DataMember = 10;" 이 줄에서 두 개체의 데이터 멤버는 모두 10의 값을 포함합니다.
"_myClassObject2.DataMember = 20;" 이 줄에서 객체의 데이터 멤버는 모두 20의 값을 포함합니다.
결국 우리는 포인터를 통해 객체의 데이터 멤버 에 액세스합니다.
클래스와 달리 구조는 값 유형입니다. 예를 들면 다음과 같습니다.
Structure MyStructure
{
Public Int DataMember; //By default, accessibility of Structure data
//members will be private. So I am making it as
//Public which can be accessed out side of the structure.
}
Static Public void Main (string[] arg)
{
MyStructure _myStructObject1 = new MyStructure();
_myStructObject1.DataMember = 10;
MyStructure _myStructObject2 = _myStructObject1;
_myStructObject2.DataMember = 20;
}
위 프로그램에서
new 연산자를 사용하여 MyStructure 유형의 객체를 인스턴스화하고 MyStructure 유형의
_myStructObject 변수에 주소를 저장하고
"_myStructObject1.DataMember = 10"을 사용하여 구조의 데이터 멤버에 값 10을 할당합니다.
다음 줄에서는
MyStructure 유형의 다른 변수 _myStructObject2를 선언하고 _myStructObject1을 할당합니다.
여기서 .NET C # 컴파일러는 _myStructureObject1 개체의 다른 복사본을 만들고
해당 메모리 위치를 MyStructure 변수 _myStructObject2에 할당합니다.
따라서 _myStructObject1에서 변경 한 내용이 MyStructrue 유형의 다른 변수 _myStructObject2에 영향을 미치지 않습니다.
그래서 우리는 구조가 가치 유형이라고 말합니다.
따라서 클래스의 직접적인 Base 클래스는 Object이고 Structure의 직접적인 Base 클래스는 Object에서 상속되는 ValueType입니다.
클래스는 상속을 지원하지만 구조는 지원하지 않습니다.
우리는 어떻게 말합니까?
그리고 그 이유는 무엇입니까?
답은 수업입니다.
추상, 봉인, 정적 및 부분적 일 수 있으며 개인, 보호 및 보호 내부 일 수 없습니다.
구조체와 클래스의 주요 차이점은 구조체에서는 다른 데이터 형식의 데이터 변수 만 선언 할 수 있고 클래스에서는 데이터 변수, 멤버 함수를 선언 할 수 있으므로 함수를 통해 데이터 변수를 조작 할 수 있다는 것입니다.
-> class vs struct에서 찾은 또 다른 편리한 점은 프로그램에서 파일을 구현하는 동안 매번 새로운 작업 세트마다 구조체의 작업을 반복하고 싶다면 별도의 기능을 수행해야하며 struct 객체를 파일에서 읽은 후 전달하여 일부 작업을 수행하십시오. 클래스에서 매번 필요한 데이터에 대해 일부 작업을 수행하는 함수를 만드는 경우 .. 파일에서 객체를 읽고 함수를 호출하면됩니다.
그러나 프로그래머가 자신에게 적합한 방법을 결정합니다 ... 나에 따르면 OOP를 지원하기 때문에 항상 수업을 선호하므로 거의 모든 언어로 구현되는 이유와 모든 시간 프로그래밍의 훌륭한 기능입니다. )
그리고 내가 잊어 버린 가장 잊혀진 차이점은 클래스가 데이터 숨기기를 지원하고 구조체가하지 않는 동안 내장 데이터 형식에서 수행되는 작업을 지원한다는 것입니다!
** 업데이트 : **이 회신을 무시하십시오. 구조체의 경우 값이 초기화되지 않았지만 0이 될 가능성을 고려하지 않았습니다. 구조체와 클래스 사이에는 초기화 차이가 없습니다.
기본 초기화와 관련된 구조체와 클래스 사이에 또 다른 차이점이 있습니다.
struct Foo {
int a;
};
class Bar {
int a;
};
class Tester {
Foo m_Foo = Foo();
Bar m_Bar = Bar();
public:
Tester() {}
};
int main() {
auto myTester = Tester();
}
해당 코드를 실행하고 myTester를 검사하십시오. m_Foo의 경우 m_Foo.a 구조체가 0으로 초기화되었지만 m_Bar의 경우 m_Bar.a 클래스는 초기화되지 않았습니다. 따라서 구조체와 클래스의 기본 생성자가 수행하는 작업에는 차이가있는 것으로 보입니다. Visual Studio에서 이것을보고 있습니다.
구조와 클래스에는 3 가지 기본 차이점이 있습니다.
스택 메모리의 클래스가 참조 용으로 만 예약되고 실제 메모리가 힙 메모리에 예약되어 있는지 여부에 관계없이 스택 메모리의 구조 (프로그래밍 언어에 가까운)에 메모리가 예약됩니다.
2Nd-기본적으로 구조는 클래스가 개인으로 취급되는지 여부를 공개적으로 취급합니다.
3Rd- 구조에서 코드를 재사용 할 수는 없지만 클래스에서는 상속이라고하는 많은 시간에 동일한 코드를 재사용 할 수 있습니다.
참고 URL : https://stackoverflow.com/questions/92859/what-are-the-differences-between-struct-and-class-in-c
'Programing' 카테고리의 다른 글
Visual Studio Code에서 파일을 어떻게 검색합니까? (0) | 2020.02.19 |
---|---|
숭고한 텍스트 2-공백 문자보기 (0) | 2020.02.19 |
jQuery.each () 유틸리티에서 다음 반복으로 건너 뛰는 방법? (0) | 2020.02.19 |
pip를 강제로 현재 버전을 다시 설치할 수 있습니까? (0) | 2020.02.19 |
Markdown에서 동일한 문서의 일부에 링크하는 방법은 무엇입니까? (0) | 2020.02.19 |