1

初期化されていないオブジェクトでクラスメンバー関数を使用できるのはなぜですか(少なくとも初期化されていないと思います)。以下はエラーなしで実行されます。

// A.h
class A {
 public:
  explicit A(int n) : n_(n) {};
  ~A() {};
  int foo() {
    return n_;
  };
  int bar(int i) {
    return i;
  };
 private:
  int n_;
};

// main.cc
#include <iostream>
#include "A.h"

int main(int argc, char **argv) {
  A *myClass;
  std::cout << myClass->bar(5) << "\n";
}

確かに試みは失敗しますが、宣言したのはへのポインタが存在し、呼び出されるというmyClass->foo();ことだけなのに、なぜ使用できるのでしょうか? このコーディング スタイルは受け入れられますか? このアプローチを使用する理由はありますか?bar()AmyClass

4

2 に答える 2