오류, 버그, 질문 - 페이지 1057

 
Zloy_Koldun :

지갑은 특별한 케이스일 뿐입니다. 그리고 아무도 그것을 사적인 부분에 넣는 것을 귀찮게하지 않습니다.

다른 경우에는 다른 개체의 부모 클래스 변수에 액세스 해야 할 수도 있습니다.

그리고 그것을 허용할지 여부를 결정하는 것은 프로그래머에게 달려 있습니다. 그리고 컴파일러는 프로그램의 올바른 작동을 보장해야 합니다.

이것이 바로 요점입니다. 이와 매우 다른 경우가 있는 경우 아키텍처가 개념적으로 올바르지 않고 잠재적으로 위험할 수 있습니다.

C ++에서는 실패한 개념이 한 번에 도입되었습니다. 친구 수업 이라고 합니다. 예를 들어, 한 클래스가 다른 클래스가 어떻게 배열되어 있는지 알고 있으면 내부 데이터로 매우 안전하게 작업할 수 있습니다. 전 세계 수천 명의 프로그래머가이를 사용하는 관행은 이것이 해결하는 것보다 더 많은 문제를 일으키는 위험한 것으로 나타났으므로 Java 및 C #과 같은 현대 언어는 그것을 포기했습니다.

 
C-4 :
이 기능은 놀라웠습니다. 확실히, 컴파일러가 다른 사람 인스턴스의 개인 필드를 변경할 수 있도록 허용한다면 이것은 완전한 쓰레기입니다. 서비스 데스크에 게시해야 합니다 .
그들은 프로와 동등합니다. 그리고 거기도.
 
Zloy_Koldun :

이해할 수 없습니다. 왜 그렇게 자신을 제한하고 싶습니까?

이것이 자동으로 프로그램을 더 안전하게 만들 것이라고 생각합니까?

그렇지 않습니다! 오히려 그 반대가 사실입니다.

언젠가는 다음과 같이 작성하게 될 추가 제한 사항입니다.

친구야, 나는 당신이 OOP에 대해 뭔가를 알고 있는 것을 보았지만 여전히 그 본질을 이해하지 못하고 있습니다.

바라보다:

 ///
/// Класс - меценат. Любой желающий может взять из его кошелька сколько хочет.
/// Если у нас монополия на меценатов, и он может быть только один, объявляем класс статическим
/// (на его работу это никак не повлияет).
///
class Меценат
{
     public :
       /// Отдает нужное количество денег
       int GetMoney( int СколькоДенегВзять)
      {
          кошелек -= СколькоДенегВзять;
          return СколькоДенегВзять;
      }
     private :
       int кошелек;
};
클래스의 원래 아이디어가 모든 사람이 지갑을 사용할 수 있도록 하는 것이었음에도 불구하고 "지갑" 변수를 닫았다는 사실에 놀랐습니까? 그러나 모두가 놓친 만큼 가져간다면 빨간색으로 갈 수 있고 이것은 불가능합니다. 이제 GetMoney 기능이 이를 허용하지만 몇 줄을 추가할 가치가 있으며 더 이상 지갑에 있는 돈을 더 이상 가져갈 수 없습니다. 이제 "Patron" 클래스에 수십 개의 서로 다른 개체가 접근하여 돈을 요청한다고 상상해 보십시오. 지갑 변수가 열려 있으면 이러한 각 개체는 충분한 양의 돈이 있는지 확인해야 합니다(즉, 자체 구현이 있어야 함). 그리고 그들 중 적어도 하나가 그것을 가지고 있지 않다면 그는 0 대신 음수 값을 얻을 위험이 있습니다. 이는 결국 그가 돈을 요구했고 결과적으로 부채도 있음을 의미합니다.
[삭제]  
C-4 :

친구야, 나는 당신이 OOP에 대해 뭔가를 알고 있는 것을 보았지만 여전히 그 본질을 이해하지 못하고 있습니다.

바라보다:

클래스의 원래 아이디어가 모든 사람이 지갑을 사용할 수 있도록 하는 것이었음에도 불구하고 "지갑" 변수를 닫았다는 사실에 놀랐습니까? 그러나 모두가 놓친 만큼 가져간다면 빨간색으로 갈 수 있고 이것은 불가능합니다. 이제 GetMoney 기능이 이를 허용하지만 몇 줄을 추가할 가치가 있으며 더 이상 지갑에 있는 돈을 더 이상 가져갈 수 없습니다. 이제 "Patron" 클래스에 수십 개의 서로 다른 개체가 접근하여 돈을 요청한다고 상상해 보십시오. 지갑 변수가 열려 있으면 이러한 각 개체는 충분한 양의 돈이 있는지 확인해야 합니다(즉, 자체 구현이 있어야 함). 그리고 그들 중 적어도 하나가 그것을 가지고 있지 않다면 그는 0 대신 음수 값을 얻을 위험이 있습니다. 이는 결국 그가 돈을 요구했고 결과적으로 부채도 있음을 의미합니다.
나는 개인 지갑에 대해 아무 것도 없었습니다. 대화는 다음과 같이 시작되었습니다. https://www.mql5.com/en/forum/1111/page1072#comment_589657
 
Zloy_Koldun :
나는 개인 지갑에 대해 아무 것도 없었습니다. 대화는 다음과 같이 시작되었습니다. https://www.mql5.com/ru/forum/1111/page1072#comment_589657
모든 것이 맞습니다. 클래스 B 는 외부 클래스 A 를 참조하고 클래스 A 의 보호된 변수를 사용할 수 있기를 원합니다. 논리가 어디에 있는지 이해가 되지 않습니다.
 
C-4 :
모든 것이 맞습니다. 클래스 B 는 외부 클래스 A 를 참조하고 클래스 A 의 보호된 변수를 사용할 수 있기를 원합니다. 논리가 어디에 있는지 이해가 되지 않습니다.
그리고 여기에 논리가 있습니다. 좋겠다..!
 
MetaDriver :
그리고 여기에 논리가 있습니다. 좋겠다..!

http://alenacpp.blogspot.com/2006/03/blog-post_11.html

protected 수정자는 여전히 창녀입니다. 정말 필요한 경우는 드뭅니다.

진정한 캡슐화는 데이터 프라이버시를 의미합니다.

Права доступа при наследовании
  • 2006.03.11
  • alenacpp.blogspot.com
С правами доступа при наследовании довольно легко запутаться. Мало того, что для данных и функций класса в С++ есть целых три уровня доступа: , и , еще ведь можно и само наследование сделать , и . Самым загадочным их них является -наследование. Запутаться во всем этом зоопарке очень просто, поэтому я аккуратно расписала где какой уровень досупа...
 
SymbolName() 을 통해 첫 번째 기호를 선택하려면 pos에 1 또는 0을 넣어야 하나요? 배열과 같은 인덱싱이 있습니까?
 
paladin800 :
SymbolName() 을 통해 첫 번째 기호를 선택하려면 pos에 1 또는 0을 넣어야 하나요? 배열과 같은 인덱싱이 있습니까?
따라서 쉽게 확인할 수 있습니다. 인쇄.
 
paladin800 :
SymbolName() 을 통해 첫 번째 기호를 선택하려면 pos에 1 또는 0을 넣어야 하나요? 배열과 같은 인덱싱이 있습니까?
예, 제로에서.