`
yaojingguo
  • 浏览: 201668 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Difference between C++ class and struct

阅读更多

C++ Standard has an explanation for the difference. The first difference is described in 11.2 Accessibility of base classes and base class members

 

In the absence of an access-specifier for a base class, public is assumed when the derived class is defined with the class-key struct and private is assumed when the class is defined with the class-key class.

 

The second difference is described in 11.1 Access specifiers. The explanation is in comments in the example code.

 

The following code shows this difference.

 

#include <iostream>
using namespace std;

struct SPerson {
  void hello() const {
    cout << "hello\n";
  }
};

class CPerson {
  void hello() const {
    cout << "hello\n";
  }
};

class Base {
  public:
    void hello() const {
      cout << "hello\n";
    }
};

struct SDerived: Base {
};

class CDerived: Base {
};

int main(int argc, const char *argv[]) {
  SPerson sp;
  sp.hello();
  CPerson cp;
  cp.hello(); // compile error

  SDerived sd;
  sd.hello();
  CDerived cd;
  cd.hello(); // compile error

  return 0;
}
 

http://stackoverflow.com/questions/92859/what-are-the-differences-between-struct-and-class-in-c is a discussion about the difference. Since stackoverflow can't be accessed sometimes in China, I write this post.

 

 




分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics