Interstage Application Server アプリケーション作成ガイド (CORBAサービス編)
目次 索引 前ページ次ページ

第5章 アプリケーションの開発(C++言語)> 5.6 varクラス

5.6.1 String_varクラス

 String_varクラは文字列操作を簡易化するためのいくつかのメンバ関数を提供します。その他のvarクラスとの大きな違いは、constあり、constなしの場合の2種類のメンバ関数が定義されていることです。以下にString_varクラスのクラス定義を示します。

  class String_var {
    public : 
        String_var();                      // デフォルトコンストラクタ
        String_var( char * );              // char * コンストラクタ
        String_var( const char * );        // char *コンストラクタ
        String_var( const String_var & );  // コピーコンストラクタ
        ~String_var();                     // デストラクタ

        String_var    &operator=( char * );             // char *代入演算子
        String_var    &operator=( const char * );       // char *代入演算子
        String_var    &operator=( const String_var & ); // 代入演算子

        operator      char*();                          // 変換オペレータ
        operator      const char*() const;              // 変換オペレータ

        char          &operator[]( ULong );             // [ ]オペレータ
        char          operator[]( ULong ) const;        // [ ]オペレータ
    private: 
        char          *_ptr; 
  };

String_varクラスのメンバ

意味

デフォルトコンストラクタ

インスタンス生成時、_ptrをNULLに初期化します。

char *コンストラクタ

constなし:
 インスタンス生成時、指定されたパラメタのポインタを_ptrに設定します。
constあり:
 インスタンス生成時、指定されたパラメタのコピーを作成し、_ptrに設定します。

コピーコンストラクタ

インスタンス生成時、指定されたパラメタの_ptrのデータのコピーを作成し、_ptrに設定します。

デストラクタ

_ptrをCORBA::string_freeによって解放します。

char *代入演算子

constなし:
 右辺で指定されたchar*ポインタを_ptrに代入します。
constあり:
 右辺で指定されたchar*ポインタデータのコピーを_ptrに代入します。

代入演算子

右辺で指定されたString_var変数の_ptrのデータのコピーを作成し、_ptrに代入します。

交換演算子

_ptrに設定されているポインタを取り出します。

[ ]演算子

パラメタで指定されている_ptr番目の要素の参照値を取り出します。

デフォルトコンストラク

 デフォルトコンストラクタは_ptrをNULLに初期化します。デフォルトコンストラクタの使用例と処理内容を以下に示します。

  String_var  data; 

  CORBA::String_var::String_var()
  {
      _ptr = NULL; 
  }

char*コンストラク

 char*コンストラクタはconstなしの場合は、インスタンス生成時、指定されたパラメタのポインタを_ptrに設定します。constありの場合は、インスタンス生成時、指定されたパラメタのコピーを_ptrに設定します。char *コンストラクタの使用例と処理内容を以下に示します。

  CORBA::Char * str = CORBA::string_alloc(4); 
  strcpy( str, "test" ); 

  CORBA::String_var data1( str ); 
  // char*コンストラクタ(constなし) 

  CORBA::String_var data2( (const CORBA::Char *)str ); 
  // char *コンストラクタ(constあり) 

  CORBA::String_var::String_var( char *p ) 
  {
      _ptr = p; 
  }

  CORBA::String_var::String_var( const char *p ) 
  {
      ...  // _ptrにpの内容を複写します
  }

コピーコンストラク

 コピーコンストラクタは、インスタンス生成時、指定されたパラメタの_ptrに設定されているデータ自身の_ptrに複写します。コピーコンストラクタの使用例と処理内容を以下に示します。

  CORBA::Char * str = CORBA::string_alloc(4); 
  strcpy( str, "test" ); 

  CORBA::String_var data1( str );      // char*コンストラクタ(constなし) 
  CORBA::String_var data2( data1 );    // コピーコンストラクタ

  CORBA::String_var::String_var(
  const CORBA::String_var &r ) 
  {
      ...    // rの_ptrを取り出し、そのコピーを_ptrに設定します。
  }

デストラク

 デストラクタは、インスタンス解放時、_ptrに設定されているデータの解放を行います。デストラクタの使用例と処理内容を以下に示します。

  CORBA::Char * str = CORBA::string_alloc(4); 
  strcpy( str, "test" ); 

  CORBA::String_var *data = new CORBA::String_var( str ); 
  // char*コンストラクタ(constなし) 

  delete data;    // デストラクタが起動され_ptr(この例ではstrの指す領域)が解放されます

  CORBA::String_var::~String_var()
  {
      CORBA::string_free( _ptr ); 
  }

char *代入演算

 char*代入演算子は、constなしの場合は、右辺で指定されたchar*ポインタを_ptrに代入します。constありの場合は、右辺で指定されたchar*ポインタの指すデータのコピーを作成し、そのポインタを_ptrに設定します。すでに_ptrにデータが設定されている場合には、constなし、constありいずれの場合も、すでに設定されている_ptrのデータを解放した後で、それぞれの処理を実行します。char*代入演算子の使用例と処理内容を以下に示します。

  CORBA::Char * str = CORBA::string_alloc(4); 
  strcpy( str, "test" ); 

  CORBA::String_var data; 

  data = test;    // char*代入演算子(constなし) 

  data = (const CORBA::Char *)"new data"; 
                 // char *代入演算子(constあり) 
 
  CORBA::String_var  &
  CORBA::String_var::operator=( char *p ) 
  {
      if( _ptr ) 
          CORBA::string_free( _ptr ); 
      _ptr = p; 
      return *this; 
  }

  CORBA::String_var  &
  CORBA::String_var::operator=( const char *p ) 
  {
      if( _ptr ) 
          CORBA::string_free( _ptr ); 
      ...    // _ptrにpのコピーを作成し、そのポインタを設定
      return *this; 
  }

代入演算

 代入演算子は、右辺で指定されたString_var変数の_ptrの設定されているデータのコピーを作成し、_ptrに設定します。すでに_ptrにデータが設定されている場合には、そのデータを解放した後、処理を行います。代入演算子の使用例と処理内容を以下に示します。

  CORBA::Char * str = CORBA::string_alloc(4); 
  strcpy( str, "test" ); 

  CORBA::String_var data; 

  data = test;        // char*代入演算子(constなし) 

  CORBA::String_var  data2; 

  data2 = data1;        // 代入演算子

  CORBA::String_var  &
  CORBA::String_var::operator=( const CORBA::String_var &r ) 
  {
      if( _ptr ) 
          CORBA::string_free( _ptr ); 
          ...// rの_ptrを取り出し、そのコピーを_ptrに設定します。
      return *this; 
  }

[ ]演算

 [ ]演算子は、_ptrに設定されているパラメタで指定されたデータ+1番目のデータの参照値を返します。[ ]演算子の使用例と処理内容を以下に示します。

  CORBA::Char * str = CORBA::string_alloc(4); 
  strcpy( str, "test" ); 

  CORBA::String_var data; 

  data = test;                 // char*代入演算子(constなし) 

  CORBA::Char x = data[2];     // 3文字目's'が返ります。

  char   &
  CORBA::String_var::operator[]( ULong index ) 
  {
      return _ptr[index]; 
  }

目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2005