タグ付けされた質問 「access-specifier」


8
プライベートクラスメソッドを作成する方法
プライベートクラスメソッドを作成するこのアプローチが機能する理由: class Person def self.get_name persons_name end class << self private def persons_name "Sam" end end end puts "Hey, " + Person.get_name puts "Hey, " + Person.persons_name #=> raises "private method `persons_name' called for Person:Class (NoMethodError)" しかし、これはしません: class Person def self.get_name persons_name end private def self.persons_name "Sam" end end puts …


7
Rubyにプライベートメソッドと保護メソッドの両方があるのはなぜですか?
この記事を読む前に、Rubyのアクセス制御は次のように機能すると思っていました。 public-任意のオブジェクトによってアクセスすることができる(例えばObj.new.public_method) protected -オブジェクト自体およびすべてのサブクラス内からのみアクセスできます private -protectedと同じですが、メソッドはサブクラスに存在しません しかし、ように見えるprotectedし、privateあなたが呼び出すことができないという事実を除いて、同じように動作するprivate(つまり、明示的なレシーバを持つメソッドをself.protected_method動作しますが、self.private_methodしません)。 これの意味は何ですか?メソッドが明示的なレシーバーで呼び出されないようにするシナリオはいつありますか?

5
C ++のプライベート仮想メソッド
C ++でプライベートメソッドを仮想化する利点は何ですか? 私はオープンソースのC ++プロジェクトでこれに気づきました: class HTMLDocument : public Document, public CachedResourceClient { private: virtual bool childAllowed(Node*); virtual PassRefPtr<Element> createElement(const AtomicString& tagName, ExceptionCode&); };


9
Rubyのプライベートモジュールメソッド
2つの質問があります ベストプラクティス 公開インターフェースを使用してデータ構造に対して何らかの操作を実行するアルゴリズムがあります 現在、多数の静的メソッドを持つモジュールであり、1つのパブリックインターフェイスメソッドを除いてすべてプライベートです。 すべてのメソッド間で共有する必要があるインスタンス変数が1つあります。 これらは私が見ることができるオプションです、どれが最高ですか?: モジュールの静的(ルビーで「モジュール」)を持つメソッド 静的メソッドを持つクラス データ構造に含めるMixinモジュール そのデータ構造(非常に小さい)を変更するアルゴリズムの部分をリファクタリングし、アルゴリズムモジュールの静的メソッドを呼び出すミックスインを作成します。 テクニカルパーツ プライベートModuleメソッドを作成する方法はありますか? module Thing def self.pub; puts "Public method"; end private def self.priv; puts "Private method"; end end privateそこには何ら影響を与えていないようです私はまだ呼び出すことができ、Thing.priv問題なく。

5
コピーコンストラクターでプライベート変数にアクセスできるのはなぜですか?
クラス内のget関数を使用するだけで、プライベート変数にアクセスできないことを学びました。しかし、なぜコピーコンストラクターでアクセスできるのでしょうか。 例: Field::Field(const Field& f) { pFirst = new T[f.capacity()]; pLast = pFirst + (f.pLast - f.pFirst); pEnd = pFirst + (f.pEnd - f.pFirst); std::copy(f.pFirst, f.pLast, pFirst); } 私の宣言: private: T *pFirst,*pLast,*pEnd;
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.