Inkscapeのコード中の関数定義で次のような文があった。(item->transformの型はNR::Matrix)
// save the transform, to re-apply it after simplification NR::Matrix const transform(item->transform);
transform関数は無い(あるけどスコープ外)から何か手続きをしているわけでも無いし、そもそもだったらその前の型指定とかおかしいし。というわけで、どうもこれはtransformという変数を宣言して、その初期値としてitem->transformを代入しているということらしい。以下のコードを作ってみたら、a, bともに同じ値が入った、同じ意味なのかな。
#include <iostream.h> int main() { int a = 10; int b(10); cout << "a: " << a << endl; cout << "b: " << b << endl; return 0; }
で、疑問はなんでこういう代入の仕方があるのか、なんか古い記法なんすかね。それとも気づかなかった違いがあるのか。
(追記: 05/09/01)ツッコミを頂いてInkscapeのNR::Matrixのドキュメントを見たら、NR::Matrixを引数にとるコンストラクタがきちんとありました。
うぅぅ、C++やり直そう、なんだか完全に頭はJava基準なのか。っていうか、そんなややっこしい挙動わかんないっすよー。