В C ++ указатель this
является pointer
, а не object
(в Java вы можете получить к нему доступ с помощью .
). Тем не менее, вам потребуется стрелка разыменования (т. Е. this->member
или (*this).member
).
В любом случае это можно сделать. Однако параметризация в C ++ работает в обратном порядке и не может быть названа. Например, int test(int a=2, int b=42)
является законным, а также int test(int a, int b=42)
. Однако int test(int a=2, b)
не является законным.
Что касается вашего второго вопроса, в этом примере нет существенной разницы между конструкторами. Существуют незначительные (потенциальные) различия в скорости, но в этом случае они, скорее всего, незначительны. В первом случае вы используете список инициализаторов (требуется для наследования и вызова конструктора базового класса, если это необходимо), а во втором просто задается значение вашей переменной (то есть с использованием operator = ()).