Nó được coi là xấu bởi vì nó phức tạp hơn và tăng nhiều vấn đề hơn mọi người thường mong đợi, đặc biệt là khi các lớp cơ sở không hoàn toàn trừu tượng (không có thành viên dữ liệu). Kim cương kế thừa có thể được giải quyết bằng cách sử dụng thừa kế ảo, nơi một cơ sở chung được chia sẻ. Và các trình biên dịch có thể bắt gặp các va chạm chữ ký của phương thức. Được sử dụng tốt, nó có thể tạo ra các giải pháp thanh lịch và DRY, nếu không có nhiều chi tiết hơn để thực hiện thông qua giao diện và sáng tác/đại biểu.
Một thành ngữ MI phổ biến trong C++ là dành cho các hàm dựng phức tạp, trong đó các đối tượng cơ sở cần được xây dựng với các đối tượng thành viên không tầm thường và vì các đối tượng cơ sở cần được xây dựng trước đối tượng thành viên, mẹo sử dụng MI (" dựa trên thành ngữ "thành ngữ"), nếu không bạn phải sử dụng một nhà máy và nhiều bước để thực hiện việc xây dựng như Java (Java không có MI cho các lớp không giao diện).
Đừng sợ nó và sử dụng nó khi thích hợp (mặc dù nó có thể mất một số thực hành để phát hiện một sự phù hợp tốt).
Nó không phải là một vấn đề nếu bạn yêu cầu D để ambiguate. –