C++クラスで抽象的なキーワードを書くことはできますか?C++クラスで `abstract`キーワードを使うことができます
答えて
いいえ、C++にはキーワード抽象はありません。ただし、pure virtual functionsと書くことができます。それは抽象クラスを表現するC++の方法です。
class X
{
public:
virtual void foo() = 0;
};
それらの少なくとも1つが抽象であると考えられる有する任意のクラス:C++で
これは、.NETフレームワークのC++/CLI言語の一部として導入されたキーワードです。
... C++ではありません。真実、ref、それは侵略です... – DevSolar
技術的には、ネイティブコード用のMicrosoft C++拡張機能です.Netをターゲットにしていないとしても、C++/CLI固有のものではありません。ちょうど拡張で、 '__interface'や' __declspec(property) 'と同じです。まだISO C++ではありません。 –
downvoteではなく、C++は標準C++を意味します。すべてのXYZ非標準実装を明示的に指定しなければならず、そのような仕様が作成されるまでその存在を認識する理由はありません。 – lorefnon
いいえ、抽象クラスとしてクラス内に少なくとも1つの純粋仮想関数を持つ必要があります。ここで
がそこにはキーワードが「抽象的」ではありませんが、純粋仮想関数が1のインタフェースとして使用を拡張し、再できた抽象クラスにしてクラスをオンにします。cplusplus.com
#define abstract
良いリファレンスです
純粋仮想関数を追加すると、他の人が指摘するように、クラスは抽象クラスになります。
しかし、純粋な仮想メンバーを持たない抽象基底クラスを実装したい場合は、コンストラクタを保護すると便利です。このようにして、ユーザーはABCをサブクラス化して使用するようになります。
例:
class Base
{
protected:
Base()
{
}
public:
void foo()
{
}
void bar()
{
}
};
class Child : public Base
{
public:
Child()
{
}
};
実際キーワードabstract
は、C++(VS2010少なくとも)に存在し、Iは非インスタンス化としては、クラス/構造体を宣言するために使用することができるが見つかりました。
struct X abstract {
static int a;
static void foX(){};
};
int X::a = 0;
struct Y abstract : X { // something static
};
struct Z : X { // regular class
};
int main() {
X::foX();
Z Zobj;
X Xobj; // error C3622
}
MSDN:https://msdn.microsoft.com/en-us/library/b0z6b513%28v=vs.110%29.aspx
'abstract'はC++標準の一部ではありません。 – smerlin
標準ではありませんが、機能しないサニティチェックであるため、ケンの回答ごとに他のコンパイラで条件付きの '#define 'で簡単に修正できます。 –
@cz '#define abstract'は何を達成するのですか? –
のC++で利用可能な任意抽象的なキーワード何がない.because何あなたがキーワードとして抽象的に使用することはできません。
クラスをin C++アブストラクトにしたい場合は、少なくとも1つの関数を純粋仮想関数として宣言することができます。
しかし、派生クラスでは、定義コンパイルエラーを与える必要があります。
EX:
class A
{
public :
virtual void sum()=0;
};
注:
私は抽象は、C++のキーワードではないことを言った上でので、あなたは、変数名、クラス名として抽象的に使用することができます。
いいえ、C++にはキーワード抽象はありません。ただし、純粋な仮想関数を書くことはできます。それは抽象クラスを表現するC++の方法です。これは、.NETフレームワークのC++/CLI言語の一部として導入されたキーワードです。いいえ、少なくとも1つの抽象クラスとして純粋仮想関数を持つ必要があります。
class SomeClass { public: virtual void pure_virtual()= 0; //純粋な仮想関数
};
- 1. C++クラスのObjective-C++サブクラスを作ることができます
- 2. 私のクラスは、Pythonの "in"キーワードでうまくいくようにすることができますか?
- 3. JavascriptでTrue Abstractクラスを作成する
- 4. C# 'abstract'という修飾語はこの項目には無効です
- 5. C#のキーワード「final」を受け入れることができますか?
- 6. C#このキーワードを使用するときのジェネリック型
- 7. JOINキーワードを使用して結合を行うことはできますか?
- 8. InterfaceクラスとAbstractクラスの適切な使用
- 9. どのようにC#でオーバーロードメソッドを使うことができますか?
- 10. C#でsaxon Import-queryを使うことはできますか?
- 11. どうすればC++であるクラスのポインタを別のクラスに移動することができます
- 12. ラケットマクロはキーワード引数を取ることができますか?
- 13. VBクラスのobejctをC#クラスから作ることができます
- 14. C++で匿名クラスを使用することはできますか?
- 15. キーワードを使用してデータを並べ替えることができます
- 16. 私が行うことができますWindows上でC
- 17. Pure Abstractクラスとインターフェイスの違い
- 18. 保護されたコンストラクタとMustInherit/Abstractクラス
- 19. cでtypedefキーワードを使用
- 20. Python:なぜクラスで `super`を使うことができませんか?
- 21. C#クラス:デストラクタを使用すれば、ロギング/ハウスキーピングを行うことができますか?
- 22. Cudafy.NETでvolatileキーワードを使用することはできますか?
- 23. TypeScriptでは、 "new"キーワードなしでクラスを使用できますか?
- 24. C++クラスは参照のみで渡すことができます
- 25. 私はすべてのT-SQL予約済みキーワードのリストをC#プログラムで得ることができます
- 26. Robotframeworkは、Cシャープ開発GUI上でキーワード駆動テストをサポートすることができます
- 27. NoClassDefFoundError実行時にクラスをクラスに追加するときに、メインクラスでabstractまたはinterfaceを使用したとき
- 28. クラス内でのこのキーワードの意味
- 29. jqueryでpythonでvarを使うことができます
- 30. あなたはobjective-cでサブクラス化をどこまで使うことができますか?
もちろん、できます。残念ながら、コードはコンパイルされませんが、=) – SadSido
Visual C++の抽象キーワード(Micrsoft特有)はどうですか?それは標準ではなく、私の意見ではうまく実装されていますが、それは重要ですね。 :P – user965369
C++の純粋仮想関数に加えて、クラス名プレフィックスとして "A_"という抽象クラスを任意の言語でマークします。 "A_MyAbstractClass"。私は個人的にはこれが非常に便利だとわかります。 –