C++などの基礎


メンバー関数は、キーワードconstをパラメータテーブルに追加すると、メンバー関数を定数として宣言できます.
double avg_price() const

constメンバーは、操作するオブジェクトのデータメンバーを変更することはできません.constは宣言と定義に同時に表示される必要があります.1つだけ表示されると、コンパイル時にエラーが発生します.
クラスのメンバーにクラス宣言を使用するのは、クラス定義が完了した場合にのみ、データ・メンバーがクラス・タイプとして指定されます.このタイプが不完全なタイプの場合、データ・メンバーはクラス・タイプへのポインタまたは参照のみです.クラス定義体が完了してからのみクラスを定義できるため、クラスは独自のタイプのデータメンバーを持つことはできません.ただし、クラス名が表示されると、クラスが宣言されたとみなされます.したがって、クラスのデータ・メンバーは、自分のタイプへのポインタまたは参照とすることができます.
class LinkScreen{
       Screen window;
       LinkScreen *next;
       LinkScreen *prev;
};

抑制されたthisポインタは、メンバー関数内でthisを明示的に参照する必要はありませんが、オブジェクトを参照するメンバーではなく、オブジェクトを全体的に参照する必要がある場合にのみ使用する必要があります.すなわち、関数は、関数を呼び出すオブジェクトへの参照を返します.
class Screen{
public:
      Screen& move(index r, index c);
      Screen& set(char);
      Screen& set(index,index,char);
}

Screen& Screen::set(char c)
{
    contents[cursor]=c;
    return *this;
 }
 Screen& Screen::move(index r,index c)
 {
     index row=r*width;
     cursor=row+c;
     return *this
  }

ここで、thisは非常に量のScreenを指すポインタです.
関数の戻りタイプは、クラスの役割ドメインでパラメータタイプと比較して、メンバー名の前に現れるとは限りません.関数がクラス定義体の外で定義されている場合、クラスの役割ドメインの外にタイプの名前を返すために使用されます.戻りタイプがクラスによって定義されたタイプを使用する場合は、完全修飾名を使用する必要があります.次のようになります.
class Screen{
public:
      typedef std::string::size_type index;
      index get_cursor() const;
};
inline Screen::index Screen::get_cursor() const
{
    return cursor;
 }

完全に定義されたタイプ名Screen::indexを使用して、必要なindexがクラスScreenで定義された名前であることを指定する必要があります.