(프로그램 과정에서 가치를 변경할 수 있음)
아니면 '무엇의 인스턴스'가 클래스와 객체와 엄격하게 관련되어 있습니까? 그렇다면 C ++에서 'variable'이라는 개념을 어떻게 정의 하시겠습니까?
(프로그램 과정에서 가치를 변경할 수 있음)
아니면 '무엇의 인스턴스'가 클래스와 객체와 엄격하게 관련되어 있습니까? 그렇다면 C ++에서 'variable'이라는 개념을 어떻게 정의 하시겠습니까?
답변:
내가 아는 한, 해당 유형 의 기본 유형 인스턴스 값을 호출하는 것이 정확 합니다 (예를 들어 Visual Studio 매뉴얼에서 "C ++ Type System" 참조 하지만 여전히 다른 소스를 찾고 있습니다). 주로 물체를 토론 할 때 사용됩니다. 클래스 C 또는 해당 서브 클래스 중 하나에 정의 된 생성자에서 작성된 오브젝트는 클래스 C의 인스턴스입니다.
C ++의 변수는 런타임 개념이 아닙니다. 변수 이름과 추상 (구성되지 않은 경우 변경 가능) 위치 사이의 어휘 바인딩으로 컴파일러 내부에 존재합니다. 프로그램이 컴파일되면 변수는 더 이상 존재하지 않습니다. 대신, 레지스터, 메모리 등에서 데이터를 읽고 씁니다.
int
. C ++ 표준은 변수 선언의 기능에 대해 이야기 할 때 기본 형식과 기본이 아닌 형식을 구분하지 않습니다. 따라서 어떤 유형이 되든지간에 T t;
유형의 객체를 선언 합니다. T
T
아니면 '무엇의 인스턴스'가 클래스와 객체와 엄격하게 관련되어 있습니까? 그렇다면 C ++에서 'variable'이라는 개념을 어떻게 정의 하시겠습니까?
C ++에서 가능한 한 간결하게 작성하려면
분명히하기 위해 :
malloc()
'하지만 초기화되지 않은 버퍼 에 대해 이야기 할 때 중요한 점은 아직 객체가 아닌 메모리 영역입니다. 마찬가지로, 명시 적으로 파괴 된 객체 : 더 이상 객체가 아닌 메모리 영역입니다.
"올바른"은 무엇을 의미합니까?
우리가 그것에 대해 매우 엄격하고 싶다면 다음을 구별해야합니다.
따라서 표현식 인 변수 는 유형을 갖 습니다. 그 가치 (참조하는 객체)는 어떤 클래스의 인스턴스가 될 것입니다. 변수의 유형과 객체의 클래스는 일반적으로 같은 것이 아닙니다. 변수의 정적 유형은 객체의 런타임 클래스에 상한 을 두므로 클래스는 유형 에 해당하는 클래스 의 하위 유형 이어야합니다 .
당신은 항상 그 큰 입을 반복하고 싶습니까? 도대체 우리가 말하고 싶은 것과 엄격하게 말하는 것은 상황에 달려 있습니다. 종종 "변수는이 유형의 인스턴스입니다"라고 말하는 데 아무런 문제가 없습니다. 실제로 발생하는 것은 객체와 런타임 클래스의 슈퍼 클래스를 참조하기 위해 변수와 유형을 간결하게 사용하고 있다는 것입니다.
평생을 순수주의와 sophism으로 보내고 싶지 않다면 ... 그렇습니다.
고유하게 식별 된 무언가를 유지할 때마다 인스턴스화하는 다른 고유하게 식별 가능한 것을 위조 하는 용도로 사용됩니다 .
이러한 인스턴스화 중 일부 는 더 정확한 이름을 가질 수 있지만 일반적으로 이것이 작동합니다.
많은 사람들이 수업 인스턴스에 대해 "인스턴스"를 예약합니다. 그렇게하면 C ++에서 변수는 클래스의 인스턴스, 인스턴스에 대한 참조, 인스턴스에 대한 포인터 또는 기본 유형이 될 수 있습니다 (해당 컨텍스트에서 구조체를 클래스로 계산할 가능성이 높습니다) 완전히 동일). Java 또는 Objective-C에서 변수는 인스턴스가 아니며 인스턴스에 대한 참조 일 수 있습니다.
Forgot : 짧은 시간 동안 C ++ 포인터는 생성자 실행을 시작하기 전에 "this"와 같이 원시 메모리에 대한 포인터가 될 수 있습니다. 지금은 *이 인스턴스를 아직 호출하지 않았을 것입니다.