나는 다음과 같이 호출하기 위해 노력하고있어이C++ 참조, 주소, 포인터는
ClassName::Read(myObjectClass &temp)
과 같은 함수 정의를 참조하십시오
myObjectClass *myObj;
ClassName::Read(&myObj);
을하지만 그건 잘못된 것입니다. 그것을 호출하는 적절한 방법은 무엇입니까? 이 형이 같이 myObjectClass&
나는 다음과 같이 호출하기 위해 노력하고있어이C++ 참조, 주소, 포인터는
ClassName::Read(myObjectClass &temp)
과 같은 함수 정의를 참조하십시오
myObjectClass *myObj;
ClassName::Read(&myObj);
을하지만 그건 잘못된 것입니다. 그것을 호출하는 적절한 방법은 무엇입니까? 이 형이 같이 myObjectClass&
, 올바른 구문은 *myObj
입니다. 요점은 &myObj
은 myObj
의 주소를 제공하며 종류는 myObjectClass**
입니다. 대신 을 역 참조myObj
으로 지정하여 myObjectClass
의 인스턴스를 얻으므로 *
을 사용합니다.
덧붙여 말하자면, *myObj
을 사용하면 myObj
자체가 초기화되지 않았기 때문에 정의되지 않은 동작이 발생합니다. 동적 할당이 필수입니다
myObjectClass myObj;
ClassName::Read(myObj);
경우에, 당신은 예를 들어, 작업을 수행 할 수 있습니다 동적으로 myObjectClass
를 할당 할 필요가없는 경우, 당신은이 일을 더 나을 수 있습니다
myObjectClass *myObj = new myObjectClass;
ClassName::Read(*myObj);
//...
delete myObj;
될 필요가있다 : 제임스가 올바르게 지적한대로
는ClassName::Read(*myObj);
당신은 모든 곳에서 포인터와 동적 할당을 사용할 필요가 없습니다
myObjectClass myObj;
ClassName::Read(myObj);
이 방법. C++은 Java가 아닙니다.
'myObj'객체가 호출 함수 (예 : new myObjectClass)에 만들어지지 않은 경우 읽기는 정의되지 않은 일부 주소에 쓸 것이라는 점에주의하십시오. – guga