const!!

C++ の const には、2つの意味があります。

定数という意味での const と、
メソッドを呼んでもオブジェクトの状態が変異しませんよというconstです。

前者は、こんな感じの書き換え不可に使います。

const int a  = 10;

printf("%d\r\n" , a ) ; //読み込みはOK printf好き

//書き込みは不可 const なので書き換えられない。
a = 20; 


後者のメソッドを読んでもオブジェクトの状態が変異しませんよなconstはこんな風にメソッドの後ろにつけます。

class myClass
{
private:
    int a;
public:
    //         ↓これ
    void abc() const
    {
       //この中では、オブジェクトメンバ変数への代入が禁止になります.
       printf("%d\r\n" , this->a ) ; //読み込みはOK
       
       //書き込みは不可。 
       //書き込みするとオブジェクトの状態が変異してしまう
       this->a = 20;

       //constメソッドから非constメソッドの呼び出しは禁止です
       this->non_const_method();   //エラー

       //constメソッドだったら呼べます
       this->const_method();       //const同士なのでOK
    }
    void non_const_method()
    {
    }
    void const_method() const
    {
    }
};

で、C++屋さんが なんで、javaとかC#に const がないの?っていったときは、
後者の const のことを言っていることが多いです。

結構昔に javaにも const が入るとか入らないとか話を聞いたことがあるんですが、結局どうなったんでしょうか。。。例で出した後者のメソッドを呼んでもオブジェクトの状態が変異しませんよなconstが java でも使えるなら諸手を上げて喜ぶんですが。。。
javaは詳しくないのでいまいちよく分かりません。。。

新潟アクセス修飾子/指定子のご提案

これからは新潟の時代だ!

導入方法

#ダウンロード
#php 5.3.2 本体
wget http://jp2.php.net/distributions/php-5.3.2.tar.gz

#新潟パッチ
wget http://rtilabs.net/files/2010_05_20/niigata.patch

#サンプルその1とその2
wget http://rtilabs.net/files/2010_05_20/niigata_test1.php.txt
wget http://rtilabs.net/files/2010_05_20/niigata_test2.php.txt

##余談
##diffはこうやって作った。
##diff -crN php-5.3.2 php-5.3.2_niigata > niigata.patch

##パッチを当てる
#パッチ当てるのがめんどくさい人にはパッチを当てたバージョンもあるよ!
#http://rtilabs.net/files/2010_05_20/php-5.3.2.niigata.tar.gz
#
patch < niigata.patch

#コンパイル
cd php-5.3.2
./configure
make

##サンプルで遊ぶ
#書き込み失敗のサンプル
./sapi/cli/php ../niigata_test1.php.txt

#読み込めることを確認するサンプル
./sapi/cli/php ../niigata_test2.php.txt

新潟で何が変わるか?

読めるけど、書けない。

niigataアクセス修飾子はクラスの外から読むことはできるけど、書き込むことができないアクセス修飾子。

class Human{
   niigata $Age;

   public function 
            __construct($age,$name)
   {
       $this->Age = $age;
       //略
   }
};

//コレできても、
echo $HumanObject->Age;

//これはできない
$HumanObject->Age = 100;
// Fatal error: Cannot access niigata property Human::$Age in 
// /home/rti/lab/php-5.3.2/a.php on line 13

無意味なgetter からの解放!!

//非新潟のコード
//無意味なgetterの連続
class Human{
   private $Age,$Name,$Address,$Tel;

   public function 
            __construct($age,$name)
   {
       $this->Age = $age;
       //略
   }
   public function getAge(){
       return $this->Age;
   }
   public function getName(){
       return $this->Name;
   }
   public function getAddress(){
       return $this->Address;
   }
   public function getTel(){
       return $this->Tel;
   }

};

↓新潟ライズ

//新潟なコード
class Human{
   niigata $Age,$Name,$Address,$Tel; //これ

   public function 
            __construct($age,$name)
   {
       $this->Age = $age;
       //略
   }
};