C + + 소멸자를 작성하고 있습니다. (올바른 용어이고 C++을 처음 사용하기를 바랍니다.) 가비지 수집이 필요한 부분에 대해 긍정적이지 않습니다. . 가비지 수집을 위해 인스턴스 변수로 2 포인터가 있다고 가정 해 봅시다. 인스턴스 변수로 객체를 가지고 있다면 어떨까요? 또는 객체에 대한 포인터입니까? 정확하게 삭제해야 할 항목과 자동 정리되는 항목에
저는 C++의 RAII 숙어와 스마트 포인터를 사용하는 방법에 대해 배우고 있습니다. 제 독서에서, 저는 두 가지를 보았습니다. 그것은 저에게 서로 모순되는 것처럼 보입니다. http://www.hackcraft.net/raii/에서 인용 : ... RAII 의미와 부재 오브젝트가 작성되어 생성자 다음 소멸자가 풀림 스택의 일부로서 호출된다 완료되기 전에
C 라이브러리 FILE *을 래핑하는 템플릿을 얼마 동안 가지고 있습니다. 이는 FILE *에 대한 래퍼 클래스에 대한 공유 포인터를 상당히 고전적으로 구현 한 것입니다. 내 자신의 사용자 지정 공유 포인터를 사용하는 추론은 FILE *로 작동하는 레거시 코드의 드롭 인 대체를 수행 할 수 있도록 일부 C 라이브러리 FILE * free 함수에 대해 무료
std::auto_ptr을 사용하는 데 문제가 있습니다. 나는 GCC 4.6.1을 사용하여 우분투 11.10에서 다음을 컴파일하려고 시도하고, 에러 메시지 error: no match for call to ‘(std::auto_ptr<int>) (int*)’을 얻는다. #include <memory>
#include <iostream>
class To
예외의 소멸자를 정리 코드를 넣을 장소로 사용할 수 있습니까? 이렇게하면 클라이언트가 RAII와 반대되는 최종 단계를 제어 할 수 있습니다. 좋은 디자인입니까 아니면 나쁜 디자인입니까? OOP 및 C++의 컨텍스트에서 올바른 솔루션입니까? 현재 비동기 적으로 여러 작업을 시작하는 비동기 프로 시저에서 작업 중입니다. 다음과 같이 패턴은 같습니다 struct
최대 후속 this 게시물로 나는 make_unique의 구현이 다음 코드와 같은 함수 임시 버퍼 배열 할당과 관련하여 어떻게 작동하는지 궁금합니다. f()
{
auto buf = new int[n]; // temporary buffer
// use buf ...
delete [] buf;
}
이는 make_unique 일
나는 등의 사용에 "대해서 openConnection"기능이있는 독점 라이브러리를 사용하고 작업을 수행하는 방법 현재의 메소드가 어떻게 종료 되더라도 연결은 닫힙니다. C++에서는 RAII이 될 것이고, Java에서는 아마도 "finally"블록 일 것입니다. R에 뭐가 들었 니?
C++에서는 main()에서 초기화되어야하지만 전역 적이어야하는 객체를 갖는 가장 좋은 방법은 프로그램 전체의 다른 함수에서 액세스 할 수 있도록하는 것입니다. 소멸자가 제대로 정리되었는지 확인하기 위해 소환원을 호출했는지 확인하십시오. 당신이 operator->를 통해 멤버에 액세스하지 않으려면
예를 통해 클래스를 사용하여 RAII 관용구를 구현하는 방법을 더 잘 이해하고 싶습니다. 권장되는 방법은 포인터가 내 클래스에서 제대로 작동하는지 확인하는 것입니다. 나는 프로그램 기간 동안 존재해야하는 클래스가 있습니다. RAII의 정신에서 그리고이 클래스에 대한 참조를 다른 클래스에 전달해야하기 때문에 shared_ptr (실제로 shared_ptr에