->符號 第一種用法,就是解引用。
根據 -> 後面跟的符號的不同,解不同型別的引用,-> 表示解陣列引用,->{} 表示解雜湊引用,->() 表示解子程式引用。
例子:$arr_ref = /@array;
$arr_ref->[0] 訪問陣列 @array 的第乙個元素。
$hash_ref = /%hash;
$hash_ref-> 訪問 %hash 的 foo 分量
$sub_ref = /&test;
$sub_ref->(1, 2, 3) 使用引數列表 (1,2,3) 來呼叫 &test 這個子程式。
->符號 第二種用法,就是呼叫類或者物件的方法。
格式:$obj->method();
或者classname->method();
例如:$pop3->login( $username, $password );
my $ftp = net::ftp->new("some.host.name", debug => 0);
這兩種用法略有不同,
但是總的來說,符合以下規則:
假設 -> 的左運算元(就是左邊那個值,如 $pop3 和 net::ftp)是 $left,右運算元(就是右邊那個值,如 login 和 new)是 $right,那麼 -> 的運算規則就是:
if ( ref $left 有效 )
else
然後呼叫:
&( $left, 原引數列表 )
也就是說把類名稱和右運算元拼在一起,當作子程式名稱(注),並把左運算元當作第乙個引數。
注:perl 直譯器要做的工作其實要比這複雜,它還要考慮到繼承的問題。
VC中sizeof的主要用法
1 sizeof應用在結構上的情況 請看下面的結構 struct mystruct double dda1 char dda int type 對結構mystruct採用sizeof會出現什麼結果呢?sizeof mystruct 為多少呢?也許你會這樣求 sizeof mystruct sizeo...
const 的主要用法
const 主要是為了增強程式的健壯性,減少程式少出錯。const 修飾的值是常量,在c語言中更精確的說是唯讀的變數,在編譯時是不能改變的。編譯器通常不為普通const 唯讀變數分配儲存空間 const int m 1 此時並未將m 放入記憶體中 const int a 100 同時也可以這樣修飾i...
operator 的主要用法
1 operator 用於型別轉換函式 型別轉換函式的特徵 1 型別轉換函式定義在源類中 2 必須須由 operator 修飾,函式名稱是目標型別名或目標類名 3 函式沒有引數,沒有返回值,但是有return 語句,在return語句中返回目標型別資料或呼叫目標類的建構函式。型別轉換函式主要有兩類 ...