C++中的class与struct
class 与 struct 最本质的区别就是默认成员权限以及默认继承方式不同:
class 为 private,struct 为 public。
关于很多网上的传言
- struct 不能实现模板
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| template <typename T> struct BaseNode { BaseNode(T input = 0) : num1(input) { } T func(const T& input) { return input | num1; } private: T num1; }; int main() { BaseNode<int> nNode(0x111); cout << nNode.func(0x1000); }
|
- 友元
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| template <typename T> struct BaseNode { BaseNode(T input = 0) : num1(input) { } friend void GetNum(BaseNode& input) { cout << "node.num is " << input.num1 << endl; } private: T num1; };
int main() { BaseNode<int> nNode(0x111); GetNum(nNode); return 0; }
|
- 虚函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| struct BaseNode { virtual void fun() { cout << "Base Fun" << endl; } }; struct SonNode : public BaseNode { virtual void fun() { cout << "Son Fun" << endl; } }; int main() { BaseNode* node = new SonNode; node->fun(); return 0; }
|