リンクリストを試しています。リストが参照渡しされていないにもかかわらず、関数「null」がリストを変更しているようです。これらの問題は、通常の値渡しパラメーターとして渡されるオブジェクトで発生する可能性があり、クラス内のデータが適切な OOP でパブリック メンバーとして宣言されない理由の 1 つであることを読みました。リストのメンバー関数として null 関数を試してみましたが、うまく機能しますが、この方法が正しく機能しない理由を理解したいと思います。ありがとう
#include <iostream>
#include <new>
#include <time.h>
#include <stdlib.h>
using namespace std;
class list{
public:
struct element {
int data;
element* next;
};
element * head;
list(){
head=NULL;
}
~list(){
while (head!=NULL){
element *e = head->next;
delete head;
head = e;
}
cout<<"Destructing..\n";
}
void add (int value){
element *e = new element;
e->data = value;
e->next = head;
head= e;
}
};
void fill10 (class list & l){
for (int i= 0; i<10 ;i++){
l.add((rand()%10)+1);
}
}
bool null (class list l){
if (l.head!=NULL){ return false;}
return true;
}
int main ()
{
srand(time(NULL));
class list l;
fill10(l);
cout<<l.head->data<<endl;
cout<<l.head<<endl;
cout<<endl<<null(l)<<endl;//when I comment this everything works out as expected
cout<<l.head->data<<endl; //this data is not the same anymore after null is called
cout<<l.head<<endl;
return 0;
}