掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
p->Show()の意味は? (ID:50681)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
C++の勉強を始めたばかりです。よろしく回答お願いします。 以下のプログラムにおいて、全員表示にて実行されるp->Show()は、”pの示すデータを使ってShowを実行しろ”という解釈で良いのでしょうか。実際にそのように動くのでそれでよいと思うのですが、いろいろな本を読んでもそのような記述はなく、単にポインタでアクセスできるとしか書かれていないので質問させて頂きました。 #include <stdio.h> #include <string.h> #include <iostream.h> ////// クラス宣言 /////////////////////////////////////////////////// class CPerson //////////////////////// 個人情報クラス { private : // 以下は外から直接アクセスできない char Name[ 20 ]; // 名前 public : // 以下は外からアクセスできる CPerson( char* name)// コンストラクタ { strcpy( Name, name ); Next = NULL; }; void Show(); // 個人情報の表示 CPerson* Next; // 次の個人情報へのポインタ }; class CAddress //////////////////////// アドレス帳クラス { private : CPerson* pPerson; // 先頭の個人情報へのポインタ void AddList( CPerson* pAdd );// 個人情報の追加処理を行う public : CAddress(){ pPerson = NULL; }; // コンストラクタ ~CAddress(); // デストラクタ void Show(); // 一覧を表示する void AddPerson( char* name);//, char* address ); // 個人情報を追加する }; ////// メンバ関数のインプリメンテーリョ/////////////////////// void CPerson::Show() { cout << Name << '\t' << '\n'; } CAddress::~CAddress() { CPerson* p = pPerson; while ( p ) { pPerson = p->Next; delete p; p = pPerson; } } void CAddress::Show() { cout << "Name\tAddress\n"; CPerson* p = pPerson; while ( p ) { p->Show(); p = p->Next; } } void CAddress::AddPerson( char* name) { CPerson* p = new CPerson( name); if ( pPerson == NULL ) {pPerson =p; return; }//1回目 CPerson* p1 = pPerson; while ( p1->Next ){//1と2回目以外 p1 = p1->Next; } p1->Next = p; } //// ** main //////////////////////////////////////////////////// int main() { CAddress MyAddress; while ( 1 ) { char name[ 20 ]; cout << "\n名前を入力してください(0:終了):"; cin >> name; if ( name[ 0 ] == '0' ) break; MyAddress.AddPerson( name); } while ( 1 ) { char sel; cout << "\n表示する番号(A:全員表示 Q:終了)"; cin >> sel; if (sel == 'a' ) MyAddress.Show(); else if (sel == 'q' ) break; } return 0; }
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.