私はC++の初心者であり、ヘッダで宣言されたconstポインタの初期化について混乱しています。一例をあげる、私は私のヘッダーに似た構造とクラスました:Aを構成非常に複雑な構造であることを知って、構造体へのconstポインタの初期化C++
/* header file.h */
typedef struct A{ ... } A;
class myClass{
protected:
A *const myPtrA;
}
をし、コンストラクタで、たとえば、myPtrAの内容をインスタンス化したいと思いますサブ構造の、および動的にインスタンス化する必要があります
/* source file.cpp */
#include file.h
myClass::myClass() {
A *tmpA = new A;
*myPtrA = *tmpA;
}
は、これは私のconstポインタmyPtrAを初期化するための良い方法ですか?そして、新しい呼び出しごとに専用の削除呼び出しが必要な場合は、* myPtrA = * aの直後にポインタtmpAを削除できますか? myPtrAが指摘する内容を失う危険はありませんか?
qroh
[良い初心者の本を探す](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)、*コンストラクタの初期化リストを読んでください*。 –
ちなみに、C++では、 'struct'はクラスに似ていますが、唯一の違いはデフォルトの可視性(' struct'の 'public'、' class'の 'private')です。つまり、 'struct'のために' typedef'を必要としません。 –
'' typedef struct A {...} A; ''は構造体を定義するCの方法です。 C++ではクラスのように定義します: '' struct A {...}; ''。 C++の構造体とクラスの唯一の違いは、デフォルトの可視性です。 – nefas