올바른 접근 방식, 모든 것이 그렇게 될 것입니다. 초기화 목록은 매개변수 생성자의 도입 결과입니다.
두 가지 예를 살펴보겠습니다.
class A
{
private :
// конструктор по умолчанию недоступен
A(){}
public :
A( constdouble & value )
: m_Value( value )
{}
private :
double m_Value;
}
class B
{
public :
B()
// т.к. коструктор А не имеет конструктора по умолчанию, единственный способ// использования класса -- инициализация в списке инициализации.// по-другому просто не должно скомпилиться
: A( 0 )
{
}
private :
A m_Value;
}
댓글에 다 있습니다.
예 2:
class A
{
public :
A()
{
Init( 0 );
}
A( constdouble & value )
{
Init( value );
}
void Init( doublevalue )
{
// очень тяжелая функция
}
};
class B
{
public :
// вариант1, правильный
B( constdouble & value )
: m_Value( value )
{
}
/*
// вариант2, неправильный
B(const double& value)
{
m_Value.Init(value);
}
*/private :
A m_Value;
};
따라서 옵션 1에는 Init에 대한 1개의 호출이 있고 옵션 2에는 2개의 호출이 있습니다. 이후 "type" 기능은 매우 무겁고, 거기에 플러스가 있습니다.
나는 (내가 당연하다고 생각하는 것처럼) - 파일 이름 변수에서 재정의된 이름을 받기를 원합니다 ...
Init()가 올바르게 작동하려면 객체가 생성된 후에 호출되어야 합니다.
아님?
VMT는 생성자의 마지막 코드에서만 초기화되는 것 같아서 생성자에서 메서드를 호출할 때 생성되는 객체의 타입이 아닌 변수 타입의 메서드가 호출되는 것 같아요.
이 같은.
적어도 이것은 작동합니다.
To MetaQuotes : 내가 올바르게 이해한다면 생성자에서 가상 함수 호출을 완전히 금지하는 것이 좋습니다. 순서대로.
또는 작동시키십시오. 내가 의심하는 것.
방금 매개변수 생성자에 대해 알게 되었습니다. 그러나 예에서 인 것 같습니다.
괄호가 강조 표시된 줄에 잘못 배치되었습니다.방금 매개변수 생성자에 대해 알게 되었습니다. 그러나 예에서 인 것 같습니다.
괄호가 강조 표시된 줄에 잘못 배치되었습니다.기술 메시지(생성자를 포함하여 초기화 주제에 대한 작은 토론의 시작). 초보자의 무거운 발걸음에 헤매지 않도록 이동: https://www.mql5.com/ru/forum/58/page31#comment_66890
초기화에 대한 질문입니다. 일반적으로 문자열 변수와 복합 객체는 "기본적으로" 자동으로 초기화 됩니다. 동시에 컴퓨터의 일정량의 컴퓨팅 성능이 낭비됩니다(아마추어적인 용어로 유감스럽게도 이것을 "컴퓨터 시계"라고 부릅니다).
이제 사용자 정의 값으로 변수를 초기화할 수 있는 초기화 목록이 있습니다. 자동 초기화와 사용자 정의 값으로 초기화할 때 초기화 속도에 차이가 있나요? 즉, 자동 초기화에 비해 초기화 목록(및 사용자 정의 값)을 사용할 때 "컴퓨터 주기"의 수가 증가합니까?
그러나 몇 사이클을 저장하면 상당한 이득을 얻을 수 있습니까? 또한 초기화는 한 번 수행되며 값은 나중에 할당해야 합니다.
저는 개인적으로 그 기술을 이해하고 싶기 때문에 질문이 중요합니다.
올바른 접근 방식, 모든 것이 그렇게 될 것입니다. 초기화 목록은 매개변수 생성자의 도입 결과입니다.
두 가지 예를 살펴보겠습니다.
댓글에 다 있습니다.
예 2:
따라서 옵션 1에는 Init에 대한 1개의 호출이 있고 옵션 2에는 2개의 호출이 있습니다. 이후 "type" 기능은 매우 무겁고, 거기에 플러스가 있습니다.엑스퍼트님 , 정말 감사합니다! 나는 이것을 정리할 것이다.
말씀하신대로 " string , dynamic array and complex object " 유형의 변수 자동 초기화와 동일한 변수의 사용자 초기화 사이에 속도 차이가 없다는 것을 간접적으로 이해했습니다.
말씀하신대로 " string , dynamic array and complex object " 유형의 변수 자동 초기화와 동일한 변수의 사용자 초기화 사이에 속도 차이가 없다는 것을 간접적으로 이해했습니다.