2013-10-15 3 views
0

Так что я в порядке с java, но новичок в C++. Я в основном пытаюсь создать конструктор для C++ с переданным параметром и присвоить это значение полю для этого объекта, используя this. Так вот что это будет выглядеть в Java:Установка переменных в конструкторе с использованием этого

//Foo fields 
    private int num; 

//Foo Constructor 
    public Foo(int num){ 
    this.num = num; 
    } 

Как я могу использовать this установить переменную типа, что в C++? Или это не вариант? Благодаря!!

+0

использование 'this-> num' –

+0

я вижу. это работает спасибо! :), пожалуйста, сообщите об этом в ответ, и не возражаете ли вы пояснить, почему? – Evorlor

+0

Обратите внимание, что хотя вы можете использовать параметр функции с тем же именем переменной-члена класса, это не очень хорошая практика в C++. На самом деле переменные-члены класса должны иметь некоторую форму префикса или суффикса (мне нравится использовать: f_num, стандартная библиотека использует num_, а многие люди используют m_num под MS-Windows Visual Studio). Таким образом вы можете просто написать: 'f_num = num; 'поскольку обе переменные имеют разные имена, это -> ...' не требуется. –

ответ

2

Использование this->num, как и в C++ это указатель, чтобы получить доступ STRUCT/членов класса с помощью указателя вы должны использовать -> вместо . между переменной и имя члена, вот от manual

expression can be read as 
*x   pointed by x 
&x   address of x 
x.y   member y of object x 
x->y  member y of object pointed by x 
+0

Вы также можете использовать имена переменных класса: 'public Foo (int other) { num = other; } ' – shade4159

3

C++ имеет более чистый подход, называемый constructor initializers. Вместо того, чтобы иметь много заданий, вы можете использовать этот синтаксис:

public MyClass::MyClass(int num): someVar(num), someOtherVar(0) { 
    // constructor here 
} 

Если вы действительно, действительно хотите использовать this, помните, что в C++ this является указателем, так что вы должны использовать операторы указатель разыменования, так либо

this->num = num; 

или

(*this).num = num; 
+0

Прохладный Спасибо за новую информацию! Могу ли я ... «MyClass (int num): num (num) {« ...? – Evorlor

+1

@Evorlor Да, вы можете! – chrylis

Смежные вопросы