このコードは、削除演算子を説明するためのc++入門書から入手しました。しかし、私が理解していないのは、プログラムが2つの関数をどのように呼び出し、それらがどのように相互作用するかです。
// delete.cpp -- using the delete operator
#include <iostream>
#include <cstring> // or string.h
using namespace std;
char * getname(void); // function prototype
int main()
{
char * name; // create pointer but no storage
name = getname(); // assign address of string to name
cout << name << " at " << (int *) name << "\n";
delete [] name; // memory freed
name = getname(); // reuse freed memory
cout << name << " at " << (int *) name << "\n";
delete [] name; // memory freed again
return 0;
}
char * getname() // return pointer to new string
{
char temp[80]; // temporary storage
cout << "Enter last name: ";
cin >> temp;
char * pn = new char[strlen(temp) + 1];
strcpy(pn, temp); // copy string into smaller space
return pn; // temp lost when function ends
}
この本は、次のサンプル実行を提供しました。
Enter last name: Fredeldumpkin
Fredeldumpkin at 0x004326b8
Enter last name: Pook
Pook at 0x004301c8
私が理解していないのは、「Enter last name:」が2回実行された方法と理由、int main()の前にchar * getname()関数が実行された理由、および2つの関数が相互に作用する方法です。