
ファイルのコピーの際に利用する
TStringList、TStringsについてお聞きしたいのですが、
TStringList *ABC = new TStringList;
TStrings *DEF = new TStringList;
上記のように宣言し、
ABC->コンポーネント1、DEF->コンポーネント2のように
使うのですが、両方とも上記宣言の右辺がなぜこのように
なるのでしょうか?なぜ2番目の宣言は左辺にTStringsと
記載していて右辺がTStringListなのでしょうか?
そもそもここで記載しているnewの意図や
通常のC言語のポインタの宣言とどう違うのかが
掴めません。どうか初心者でもわかるように
教えていただけないでしょうか?
No.2ベストアンサー
- 回答日時:
簡単に説明するとTStringListはTStringsから派生したクラスなので
TStrings型のポインタは、TStringList型も持つことができます。
>>newの意図
TStringListなどのVCLのクラスを使うには、Builderではポインタとして操作し
newでオブジェクトを作成しなければならない決まりになってます。
(これはDelphiの影響のため)
ですが、正確に理解するためにはNo1の方がおっしゃるとおりC++について
基本から勉強してみる事をお勧めします。
下記のHPなどを参考に読んでみてください。
C++入門
http://wisdom.sakura.ne.jp/programming/cpp/index …
C++
http://www.asahi-net.or.jp/~yf8k-kbys/newcpp0.html
C++Builder
http://gimite.ddo.jp/bcbqtree/qtreemain.cgi
参考URL:http://wisdom.sakura.ne.jp/programming/cpp/index …

No.3
- 回答日時:
まず、C++の new は、「演算子」です。
これは、つまりは、 a + b の + などと同じ分類になります。
さて、この場合左辺がポインタなので、初期化として、新しいオブジェクトをひとつ作って、そのオブジェクトのポインタを渡しています。
C言語だと、malloc() という「関数」がこれに近い働きをしていました。
ただし、malloc() はただ単に、要求されたサイズのメモリを確保して、その先頭へのポインタを渡すだけです。
これに対して、C++では、「クラス」の機構が導入されたために、「新しいオブジェクト」を作るには、単に、必要なだけメモリを確保するだけではすみません。
新しいオブジェクトを作るために何をすればいいかは、各クラスのコンストラクタで記述します。いずれにしても、メモリを確保したうえで、何らかの初期化処理をすることで、新しいオブジェクトを生成します。
new 演算子は、この、「メモリの確保」+「コンストラクタの実行(による新しいオブジェクトの生成)」をひとまとめにしたものです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
init関数の意味
-
セグメントエラー
-
Run-Time Check Failure #3とい...
-
C言語のポインタに直接アドレス...
-
ポインタについて
-
ポインタが文字化けしてる?!...
-
参照型で受け取った引数をポイ...
-
VBはCを混乱させる?
-
無効なポインタ操作のエラー
-
リトルエンディアンというもの...
-
デバイスハンドルとは?
-
LPSTR型の初期化について
-
アプリを32bitから64bit移行
-
cv::Mat から vectorにコピー
-
ポインタ同士の割り算
-
ポインタのミスでOS壊れるの...
-
CopyMemory()をmemcpy()に書き...
-
メモリのアドレスからの値の取...
-
UNICODE定義されている場合の関...
-
戻り値で構造体を返すことは可...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
セグメントエラー
-
init関数の意味
-
C言語のポインタに直接アドレス...
-
ExcelVBAでのkernel32(64bit)
-
Run-Time Check Failure #3とい...
-
戻り値で構造体を返すことは可...
-
fopne で失敗する原因
-
ハンドルはポインタか
-
LPSTR型の初期化について
-
CWnd::EnableWindow()の扱い方
-
コンストラクタでnewを失敗した...
-
アプリを32bitから64bit移行
-
参照型で受け取った引数をポイ...
-
プーさんのマウスポインタを教...
-
c言語で任意のファイルから読み...
-
ポインタについて
-
リトルエンディアンというもの...
-
別のDLLのダイアログを・・・
-
基本アルゴリズムの『返す』の...
-
トリプルポインタが必須!とな...
おすすめ情報