2017-10-05 1 views
1

많은 검색 프로세스 (시작, 중지, ... 등)를 처리하는 클래스가 있습니다. 나는 디퍼 런스 세라마이드에 대해 아무 생각이 아니면 성능에 영향을생성자에서 클래스 함수를 호출하거나 스마트 포인터를 사용합니까?

std::unique_ptr<CSearch> search(new CSearch); 
search->Start(); 

:

CSearch search; 
search.Start(); 

또는이 :

class CSearch 
{ 
public: 
    CSearch(); 
    ~CSearch(); 

    bool Start(); 
    bool Stop(); 
}; 

나는이 방법에서 Start 함수를 호출하기 위해 조금 혼란 스러워요 ?

더 나은 이유는 무엇입니까? (질문은 유일한 유일한 포인터에 관한 것이 아닙니다.)

+1

가능한 복제 [표준 : 독특한 \의 _PTR 무엇의 사용이다를 선언하는 방법 it?] (https://stackoverflow.com/questions/16894400/how-to-declare-stdunique-ptr-and-what-is-the-use-of-it) – wally

+3

전체 컨텍스트를 알지 못하면서 나는 포인터를 사용하여 (현명한 또는 아닙니다) 당신이 가지고있는 문제에 상관없이 올바른 해결책이 아닐 수 있습니다. –

+3

[좋은 C++ 책] (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)을 사용할 수있는 것과 같은 소리 – NathanOliver

답변

2

산악 자전거 또는 도로 자전거가 더 낫습니까?

또는 그보다 더 좋은 곳에서는 랩핑 된 새 대신 고유 한 것을 사용하기는하지만 둘 다 더 나은 상황이 있습니다.

일반적으로 동적 인 수명 할당이 필요하지 않은 경우에는 자동 저장이 더 좋습니다.

3

왜 포인터가 필요한지 설명 할 수 없다면 포인터를 사용하지 마십시오.

여기에 스트로브 스트 룹에서 빠른 읽기입니다 : 5.2 Resource Management

0

는 C++ 핵심 가이드 라인 범위 객체 (로컬 객체, 전역 개체, 또는 회원)을 할당 힙 선호해야한다고 조언한다.

성능면에서 범위가 지정된 변수를 사용하면 포함 된 범위 또는 개체에 대해 이미 사용 된 값을 초과하는 별도의 할당 및 할당 취소 비용이 없음을 의미합니다.

은 위의 여기에서 가져온 것입니다 : https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rr-scoped

당신이있어 자원 관리에 대한 자세한 지침을 찾을 수 있습니다 https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#S-resource

관련 문제