
27.07.2009, 15:03
|
|
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
С нами:
10386906
Репутация:
599
|
|
из мэйна я передаю указатель в метод, который принимает этот указатель и ему присваивается новый адрес оператором new. Далее изменяется значение data указателя. Дальше возврат в мэйн и вывод измененного значения на экран. Но значение остается прежним.
если ты хочешь изменить значение указателя, переданного параметром, то нада использовать ссылку на указатель. вообще такого кода лучше избегать в твоем примере, ибо это излишне усложнит код. примерно будет так.
Код:
#include <iostream>
using namespace std;
class node
{
public:
node() { cout << "constructor...\n"; }
~node() { cout << "destructor...\n"; }
static void func(node* &Mynode);
node(node&) { cout << "copy-constructor...\n"; }
int data;
};
void main()
{
node* Mynode = new node;
Mynode->data = 5;
node::func(Mynode);
cout << Mynode->data << endl;
}
void node::func(node* &Mynode)
{
delete Mynode;
Mynode = new node;
Mynode->data = 7;
}
метод func статический ибо иначе в твоем примере получится стремная конструкция delete this;
вообще простой совет - такие конструкции не используй никада, если уж совсем не припрет.
|
|
|