無差別に技術をついばむ鳥

情報処理技術全般を気まぐれにつつくゆるいブログです

C++/CLIをつつく10−構造体・モジュール。サブルーチン♪

今日は何が出るかな♪何が出るかな♪。何が出るかな♪。構造体が出ました♪。
構造化プログラミングの記事で処理をサブルーチンとして纏める事の大事さを一緒に考えたよね? そのサブルーチンを実現するための機能がこの構造体なんだ。 実はC++/CLIの実行環境であるCLIではまた違う意味を持っているんだけど、 その事についてはクラスを知らないと分からない話しなんで日を改めてつつくよ。
このシリーズの前回である 列挙体の記事 では値に名前をつける方法をつっついたけど、 構造体とは値だけではなくて関数(メソッド)とか変数(フィールド) を纏めるためのものなんだ。あっそうそう、構造体が持つ変数は フィールドと呼ぶピヨ。
じゃあさっそくサンプルコードを見てみよう。

#include "stdafx.h"
using namespace System;

namespace Sample
{
    public value struct Bird
    {
    public:
	//フィールド
	String^ Name;
	Int32 Age;

	//メソッド
	void Talk( ) {
		Console::WriteLine( "ワタシハ{0}。年は{1}だよ。", 
                    this->Name, this->Age);
	}
    };
}

using namespace Sample;
int main(array< System::String ^> ^args)
{
    Bird b;
    b.Name = "インドリ";
    b.Age = 29;
    b.Talk( );
    return 0;
}


このサンプルコードをじっくり見れば分かるけど、構造体はフィールドメソッドを持てるんだ。えっ?何故変数をフィールドと呼んだり、 関数をメソッドって呼ぶかって?うーんそれは、言語設計者の趣味じゃないかな?多分、 C++/CLIを作った人はこう呼べば分かりやすいと思ったんだろうね。
あと注意が必要なのはC++/CLIは構造体を作る方法が
value struct
と、
value class
の2通りがあるんだ。 この2つの文法の違いは省略した時のデフォルトのアクセス修飾子の違いなんだ。 アクセス修飾子というのは、publicとかprivateのなどの事で、
value struct
はpublic、
value class
はprivateなんだけど、 した方がいいいよ。その方が間違いが減るし、多言語を使用してややこしくなることはないしね。 では
value struct
value class
はどちらを使用した方がいいのかというと、 ボク個人の意見としては
value struct
がお勧めだよ。この方がクラスとの違いが分かりやすいからね。もちろん
value class
の方でもいいけど、 一度決めたらそのプロジェクト内ではひとつに統一することが肝心だよ。 そうしないとバグの元になるよ。
短いけど構造体について今言えることはこれだけピヨ。
次回へ続く・・・
別窓 | C++/CLI | コメント:0 | トラックバック:0 | ∧top | under∨
<<C++/CLIをつつく11−クラス。サブルーチンの進化 | 無差別に技術をついばむ鳥 | 中の人の徒然草14>>

この記事のコメント

∧top | under∨

コメントの投稿

 

管理者だけに閲覧
 

この記事のトラックバック

∧top | under∨
| 無差別に技術をついばむ鳥 |