구조에 string 유형의 변수 및/또는 동적 배열 객체가 포함된 경우 컴파일러는 이러한 구조에 대해 암시적 생성자를 할당합니다. 여기서 string유형구조 의 모든 구성원은 0으로 설정되고 올바른 초기화가 수행됩니다. 동적 배열 객체
...
생성자와 소멸자
생성자는 구조체 또는 클래스의 개체가 생성될 때 자동으로 호출되는 특수 함수이며 일반적으로 클래스 멤버를 초기화 하는 데 사용됩니다. 다음에서 우리는 클래스에 대해서만 이야기할 것이고, 달리 언급되지 않는 한 말한 모든 것은 구조에 적용됩니다. 생성자의 이름은 클래스의 이름과 일치해야 합니다. 생성자에는 반환 유형이 없습니다( void 유형을 지정할 수 있음).
클래스의 특정 멤버( 문자열 , 동적 배열 및 초기화가 필요한 객체)는 생성자의 존재 여부에 관계없이 어쨌든 초기화됩니다.
글쎄, 나는 모르겠다 :) 우리 사무실에서 작성된 코드에 대해
적어도 그들은 꾸짖을 것이고 IMHO, 그들은 옳은 일을 할 것입니다.
반복합니다. 이것은 문자열을 초기화해야 하는 경우 생성하는 동안 올바른 초기화가 필요한복잡한 유형 입니다. 이것은 확실히 MT5(4) 버그입니다.
생성 직후 어레이의 크기를 재설정해야 할 수 있습니까???
글쎄, 나는 모르겠다 :) 우리 사무실에서 작성된 코드에 대해
적어도 그들은 꾸짖을 것이고 IMHO, 그들은 옳은 일을 할 것입니다.
변수를 사용하려면 먼저 값을 할당 해야 합니다(명시적으로 초기화). 아니면 동의하지 않습니까?
명시적 초기화는 선언 시 즉시 초기화가 필요함을 의미하지 않습니다. 그러나 나중에 초기화되지 않은 변수의 값이 일부 계산에 사용되면 결과를 예측할 수 없습니다.
당신은 나를 겁주고 있어요, 라시드.
클래스에는 논리적인 경우 기본값 설정을 포함하여 개체의 초기 초기화가 수행되는 생성자가 있습니다.
초기화가 발생하지 않으면 개체가 적절한 상태인지 알 수 있는 방법이 있어야 합니다. 문자열을 사용하면 기본값을 설정하는 것이 훨씬 더 논리적입니다.
그러한 기록은 편집증이며 편집증은 선험적으로 정상적인 코드를 작성할 수 없습니다.
그래서 문자열이 초기화되지 않습니까??
그래서 문자열이 초기화되지 않습니까??
당신은 나를 겁주고 있어요, 라시드.
클래스에는 논리적인 경우 기본값 설정을 포함하여 개체의 초기 초기화가 수행되는 생성자가 있습니다.
초기화가 발생하지 않으면 개체가 적절한 상태인지 알 수 있는 방법이 있어야 합니다. 문자열을 사용하면 기본값을 설정하는 것이 훨씬 더 논리적입니다.
그러한 기록은 편집증이며 편집증은 선험적으로 정상적인 코드를 작성할 수 없습니다.
그래서 문자열이 초기화되지 않습니까??
도움말 읽기 - https://www.mql5.com/en/docs/basis/types/classes :
구조에 string 유형의 변수 및/또는 동적 배열 객체가 포함된 경우 컴파일러는 이러한 구조에 대해 암시적 생성자를 할당합니다. 여기서 string 유형 구조 의 모든 구성원은 0으로 설정되고 올바른 초기화가 수행됩니다. 동적 배열 객체
...
생성자와 소멸자
생성자는 구조체 또는 클래스의 개체가 생성될 때 자동으로 호출되는 특수 함수이며 일반적으로 클래스 멤버를 초기화 하는 데 사용됩니다. 다음에서 우리는 클래스에 대해서만 이야기할 것이고, 달리 언급되지 않는 한 말한 모든 것은 구조에 적용됩니다. 생성자의 이름은 클래스의 이름과 일치해야 합니다. 생성자에는 반환 유형이 없습니다( void 유형을 지정할 수 있음).
클래스의 특정 멤버( 문자열 , 동적 배열 및 초기화가 필요한 객체)는 생성자의 존재 여부에 관계없이 어쨌든 초기화됩니다.
주석 ... 글쎄, 적어도 나는 알 것이다.
구조에서도 NULL이 될까요?
주석 ... 글쎄, 적어도 나는 알 것이다.
구조에서도 NULL이 될까요?
NULL과 비교하고 스스로 알아내십시오 - void 유형과 NULL 상수 :
미리 정의된 const 변수 NULL 은 void 유형 입니다. 변환 없이 다른 기본 유형의 변수에 할당할 수 있습니다. 기본 유형의 변수를 NULL 값과 비교할 수도 있습니다.
예시:
//--- 문자열이 초기화되지 않은 경우 미리 정의된 값을 할당합니다.
if (some_string== NULL ) some_string= "비어 있음" ;
NULL 은 또한 new 연산자 로 생성된 객체에 대한 포인터와 비교할 수 있습니다.
변수를 사용하려면 먼저 값을 할당 해야 합니다(명시적으로 초기화). 아니면 동의하지 않습니까?
명시적 초기화는 선언 시 즉시 초기화가 필요함을 의미하지 않습니다. 그러나 나중에 초기화되지 않은 변수의 값이 일부 계산에 사용되면 결과를 예측할 수 없습니다.
새에 대해 이야기합니다.
그리고 컴파일러는 우리에게 무엇을 알려줄까요? 그리고 그는 다음과 같이 대답할 것입니다 - '=' - 불법 할당 사용
컴파일러가 기울어지지 않았습니다 - '=' - 불법 할당 사용.
내 질문은 - 프로그래머(이 경우 나)가 변수가 사용되기 전에 초기화를 처리하지 않으면(컴파일러가 요구하는 대로 작동하고 생성자에서 이 순간이 누락됨) 어떻게 됩니까?
내 질문은 - 프로그래머(이 경우 나)가 변수가 사용되기 전에 초기화 를 처리하지 않으면(컴파일러가 요구하는 대로 작동하고 생성자에서 이 순간이 누락됨) 어떻게 됩니까?
질문은 초보자에게서...
뭐, 당시에는 그렇게 생각했지만(오래전이라 기억이 가물가물), 열정적으로 지원서를 작성하고 싶었다. :)
컴파일러 수준에서 변수를 즉시 초기화하는 것이 금지된 이유를 아직 이해하지 못합니다.