C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++でshared_ptrを使用した仮想破壊


このチュートリアルでは、C++でshared_ptrを使用して仮想破壊を理解するプログラムについて説明します。

クラスのインスタンスを削除するには、基本クラスのデストラクタを仮想として定義します。そのため、作成されたのとは逆の順序で継承されたさまざまなオブジェクトインスタンスが削除されます。

#include <iostream>
#include <memory>
using namespace std;
class Base {
   public:
   Base(){
      cout << "Constructing Base" << endl;
   }
   ~Base(){
      cout << "Destructing Base" << endl;
   }
};
class Derived : public Base {
   public:
   Derived(){
      cout << "Constructing Derived" << endl;
   }
   ~Derived(){
      cout << "Destructing Derived" << endl;
   }
};
int main(){
   std::shared_ptr<Base> sp{ new Derived };
   return 0;
}

出力

Constructing Base
Constructing Derived
Destructing Derived
Destructing Base

  1. Nの基数B表現で後続ゼロの数を見つけます! C++を使用する

    この記事では、階乗のベースB表現で特定の数Nの後続ゼロを見つける問題を理解します。例 Input : N = 7 Base = 2 Output : 4 Explanation : fact(7) = 5040 in base10 and 1001110110000 in base16 having 4 trailing zero. Input : N = 11 Base = 5 Output : 2 Explanation : fact(11) = 39916800 in base10 and 40204314200 in base16 having 2 trailing zeroes.

  2. Nの基数16表現で後続ゼロの数を見つけます! C++を使用する

    この記事では、たとえば階乗の基数16の表現で特定の数Nの後続ゼロを見つける問題を理解します Input : N = 7 Output : 1 Explanation : fact(7) = 5040 in base10 and 13B0 in base16 having 1 trailing zero. Input : N = 11 Output : 2 Explanation : fact(11) = 39916800 in base10 and 2611500 in base16 having 2 trailing zeroes. まず、10進数を1つの基数から別の基数に変換するプロセ