На этот вопрос нет правильного ответа, потому что не существует единого «лучшего» определения. Если вы знаете C ++ и уже имеете много ресурсов кода C ++, C ++ выглядит привлекательно. Если вы знаете c #, а не C ++, то C # выглядит привлекательно.
Приложения C ++ загружаются быстрее, но для многих приложений это неприемлемо. Приложения на C # могут быть написаны быстрее, но они также не имеют детерминизма. Я бы даже больше не пытался использовать пользовательский интерфейс в C ++ и не думал бы о доступе к базе данных в C ++. Я бы не стал писать драйвер на C # или расширение оболочки.
Вообще говоря, большинство решений, которые я когда-либо предлагал, были сочетанием двух. C # имеет свои сильные стороны. Быстро писать, легче отлаживать и тестировать модули, трудно (хотя и не невозможно) создавать утечки, а для некоторых операций (таких как доступ к данным или синтаксический анализ XML) это просто проще.
C ++ также имеет свои сильные стороны, такие как скорость выполнения (хотя C # можно сделать таким же быстрым для многих вещей), детерминизм и возможность подключаться к вещам, которые хотят собственные точки входа.
Итак, мой ответ? Вам нужно знать и то, и другое, и, скорее всего, написать свое решение, используя оба. Процент каждого, который вы используете, зависит от вашей конечной цели.