10

次の構造の実際の効果は何ですか:

class Base { /* ... */ };

template<class T>
class Derived : public T { /* ... */ };

int main() {
    Derived<const Base> d;
    // ...
}

クラスは のインターフェースの -partのみDerivedにアクセスできますか? 私の最初のテストでは、実際にはまったく効果がないことが示されています。なんで?constBase

ありがとう!

4

1 に答える 1

2

私の推測では、constは無視されます。

class Derived : public const Base

プログラムはコンパイルされません

編集:

frozenkoiは、コメントで標準の関連部分を示しました。

「クラス型、またはその cv 修飾バージョンを指定する typedef-name (7.1.3) もクラス名です。cv 修飾クラス型を指定する typedef-name が class-名前が必要です。cv 修飾子は無視されます。typedef 名は、クラス ヘッドの識別子として使用してはなりません。" §9.1

于 2013-03-23T08:00:45.747 に答える