varクラスつくったよ!

アバター
MoNoQLoREATOR
記事: 284
登録日時: 14年前
住所: 東京

varクラスつくったよ!

投稿記事 by MoNoQLoREATOR » 13年前

一部修整しました。ここをクリックしてください

varクラスと言うだけで、おそらくどんなクラスなのか想像がつくと思います。
そうです。javascriptのように数値と文字列をあまり考えずに扱うことができるクラスです。ただ、javascriptでは数値を指しているのか文字列を指しているのかが曖昧(特に連結時)という欠点があったので、そこはカバーしました。

使用例です。クリックしてご覧ください
► スポイラーを表示

最後に
このクラスは関数の引数の型として使用された際に最大の効果を発揮すると思います。
その関数を利用する際に渡す変数が数値か文字列かを気にする必要がないからです。
あとは、コンストではないchar*型ポインタを渡せることですかね。これは大きいと思います。
これでプログラミング速度がそれなりに上がるのではないかと思います。
それでは良いプログラミングライフを。
最後に編集したユーザー MoNoQLoREATOR on 2011年11月08日(火) 22:35 [ 編集 1 回目 ]

アバター
tk-xleader
記事: 158
登録日時: 14年前

RE: varクラスつくったよ!

投稿記事 by tk-xleader » 13年前

GRAM さんが書きました: そういえばスクリプトって最近使っていないので忘れていましたがそんなような性質がありましたね。
むかし「便利だけど、便利だからこうなっているのか、それともその他の事情でこうなっているのかどっちだろう?」と悩んだことがあります。
大抵のスクリプト言語は動的型付けといって、変数の型を動的に定めるので、一つの変数がころころと型を変えるなんて事はよくあることです。
GRAM さんが書きました: public継承がまずいということは自分も思ったのですが質問させてください。
このコードの場合、そもそも継承が必要なのか?というのが自分の考えです。
private継承やprotected継承を使うとして、この場合のそのメリットはなんでしょうか?
基底クラスの使用法見る限り、単純なコンポジットでいいようにも思えるのです。
特にメリットがあるとは思えませんが、やるとしたら、という話です。確かに、今回の場合は継承よりもコンポジットのほうが適していると思います。
private継承やprotected継承が有効になる一つの例は、テンプレートクラスを実装するに当たって、テンプレート引数が必要ない部分を追い出す場合とかでしょう。
単純なコンポジットよりも非public継承を使うべき場面は、仮想関数をオーバーライドしたいときですね。この場合は、最もうまい方法は、クラス内クラスで継承して、そのインスタンスを持つという方法ですね。
naohiro19 さんが書きました:

CODE:

class foo {
public:
  virtual void bar() = 0;
};
上記のようなインターフェースクラスならpublic継承ですよね
インターフェイスクラスならば、特にvirtualデストラクタを定義するべきです。foo インターフェイスについては、protected継承が正しい選択肢です。

CODE:

class foobar : protected foo{
  foo* getFooPtr(){return static_castthis;}
  virtual void bar(){/* 実装 */}
}
としてやるのが、最も扱いやすいやり方ではないかと思います。

naohiro19
記事: 256
登録日時: 14年前

Re: varクラスつくったよ!

投稿記事 by naohiro19 » 13年前

をインクルードし、boost::operatorsをprivate継承することで残りの演算子を自動的に定義してくれます。