hoz : Так я вот одного не пойму. Какие веские причины принуждают к использованию оператора new ? Без него типа никак?
정수 : 객체의 동적 생성이 필요한 경우 필요합니다. 필요한 개체의 수와 개체 유형을 미리 알 수 없는 경우.
클래스의 동적 배열 을 사용할 수 있습니다. MQL에서는 이것이 작동합니다. C++에서는 클래스 멤버의 클래스 초기화에 문제가 있을 수 있습니다. 따라서 포인터를 배열에 넣는 것이 좋지만 단순한 것이 아니라 똑똑한 것입니다. 클래스 초기화 및 메모리 정리를 귀찮게하지 않기 위해.
ptr은 (클래스) cFather 유형으로 캐스팅되고 해당 (cFather ) 메서드 가 호출됩니다.데이터 가져오기()
이 같은..
어떤 종류의 주석 ... 나는 일종의 그렇게 생각했지만 .. 이것은 유형 (클래스)에 가져 오기에는 너무 많습니다. 프로그래밍에서, 그래서 내가 들은 한 특별한 언급을 하는 것은 권장되지 않습니다. 그리고 여기에서는 표준 유형으로 캐스팅하는 것이 아니라 클래스로 캐스팅합니다.
일반적으로 이 코드로 한 번 더 돌아가 보겠습니다.
class cFather
{
public :
int GetData() { return3 ;}
};
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+class cChild : public cFather
{
public :
int GetData() { return5 ;}
};
int f(cFather *p) { return p.GetData();}
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+intOnStart ()
{
cChild obj,*ptr= GetPointer (obj);
f(ptr); // вернет 3
((cFather *)ptr).GetData(); // вернет 3return0 ;
}
여기에서, 함수 f 의 프로토타입의 매개변수에서 함수 f 가 매개변수로 cFather 클래스의 메소드를 취하는 것을 분명히 볼 수 있습니다. START의 코드에서 다음 상황을 볼 수 있습니다.
f(ptr); // вернет 3
여기에서 함수 f 는 cFather 클래스의 메소드가 아니라 분명히 cChild 클래스에 대한 포인터를 매개변수로 받습니다. 왜냐하면 cChild obj, *ptr = GetPointer( obj );
그리고 2개의 private 함수는 필요할 때 public, 또는 public 함수를 통해 직접 호출됩니다. void SetName(string n) 함수에서 매개변수가 n 이고 두 private 메서드 모두에서 흥미롭습니다. string GetFirstName(string full_name) 및 string GetLastName(string full_name) 어떤 이유로 매개변수가 동일하게 설정되지 않습니다. 이 코드(다른 코드가 아님)를 정확히 취하면 여기에서 이러한 비공개 메서드는 매개변수가 동일하고 다른 것은 없는 공개 메서드를 통해 호출됩니다. 그렇다면 매개변수에 다른 이름을 지정하는 이유는 무엇입니까?
즉, new 연산자로 인스턴스를 생성해야 합니다.
그래서 나는 한 가지를 이해하지 못합니다. new 연산자를 강제로 사용해야 하는 좋은 이유는 무엇입니까? 그가 없으면 방법이 없습니까?
객체의 동적 생성 이 필요한 경우 필요합니다. 필요한 개체의 수와 개체 유형을 미리 알 수 없는 경우.
Так я вот одного не пойму. Какие веские причины принуждают к использованию оператора new ? Без него типа никак?
객체의 동적 생성이 필요한 경우 필요합니다. 필요한 개체의 수와 개체 유형을 미리 알 수 없는 경우.
클래스의 동적 배열 을 사용할 수 있습니다. MQL에서는 이것이 작동합니다. C++에서는 클래스 멤버의 클래스 초기화에 문제가 있을 수 있습니다. 따라서 포인터를 배열에 넣는 것이 좋지만 단순한 것이 아니라 똑똑한 것입니다. 클래스 초기화 및 메모리 정리를 귀찮게하지 않기 위해.
이 구성은 어떻게 "읽기"입니까?
특히:
나는 찾고 있고, 일어나고 있는 일의 본질에 대해 빈틈없이 집어넣고 있지 않습니다 ...이 구성은 어떻게 "읽기"입니까?
ptr은 (클래스) cFather 유형으로 캐스팅되고 해당 ( cFather ) 메서드 가 호출됩니다. 데이터 가져오기()
이 같은..
ptr은 (클래스) cFather 유형으로 캐스팅되고 해당 ( cFather ) 메서드 가 호출됩니다. 데이터 가져오기()
이 같은..
어떤 종류의 주석 ... 나는 일종의 그렇게 생각했지만 .. 이것은 유형 (클래스)에 가져 오기에는 너무 많습니다. 프로그래밍에서, 그래서 내가 들은 한 특별한 언급을 하는 것은 권장되지 않습니다. 그리고 여기에서는 표준 유형으로 캐스팅하는 것이 아니라 클래스로 캐스팅합니다.
일반적으로 이 코드로 한 번 더 돌아가 보겠습니다.
여기에서, 함수 f 의 프로토타입의 매개변수에서 함수 f 가 매개변수로 cFather 클래스의 메소드를 취하는 것을 분명히 볼 수 있습니다. START의 코드에서 다음 상황을 볼 수 있습니다.
f(ptr); // вернет 3
여기에서 함수 f 는 cFather 클래스의 메소드가 아니라 분명히 cChild 클래스에 대한 포인터를 매개변수로 받습니다. 왜냐하면 cChild obj, *ptr = GetPointer( obj );
논리가 무엇입니까?
mm .. 논리는 어디에 있습니까?
f() 메서드에서 논리는 들어오는 매개 변수가 cFather(또는 그 후속 항목) 에 대해 올바르게 처리된다는 것입니다.
mm .. 논리는 어디에 있습니까?
f() 메서드에서 논리는 들어오는 매개 변수가 cFather(또는 그 후속 항목) 에 대해 올바르게 처리된다는 것입니다.
저것들.
여기서 *p 는 cFather 에 대한 포인터입니까?
동시에, 나는 C++를 배우고 있고 비슷한 어휘가 나를 약간 혼란스럽게 합니다. 포인터는 여기에서 동일하지 않지만 .
저것들.
여기서 *p 는 cFather 에 대한 포인터입니까?
동시에, 나는 C++를 배우고 있고 비슷한 어휘가 나를 약간 혼란스럽게 합니다. 포인터는 여기에서 동일하지 않지만 .
질문을 받은지 몇 주가 지났습니다. 물어보기로 결정. 거기에는 큰 어려움이 없지만 그러한 옵션이 발생하는지 여부는 논리적으로 흥미 롭습니다. 코드는 다음과 같습니다.
이 코드에는 공개 함수가 2개뿐입니다.
그리고 2개의 private 함수는 필요할 때 public, 또는 public 함수를 통해 직접 호출됩니다. void SetName(string n) 함수에서 매개변수가 n 이고 두 private 메서드 모두에서 흥미롭습니다. string GetFirstName(string full_name) 및 string GetLastName(string full_name) 어떤 이유로 매개변수가 동일하게 설정되지 않습니다. 이 코드(다른 코드가 아님)를 정확히 취하면 여기에서 이러한 비공개 메서드는 매개변수가 동일하고 다른 것은 없는 공개 메서드를 통해 호출됩니다. 그렇다면 매개변수에 다른 이름을 지정하는 이유는 무엇입니까?
질문이 명확하기를 바랍니다.