Chinaunix首页 | 论坛 | 博客
  • 博客访问: 880717
  • 博文数量: 254
  • 博客积分: 5350
  • 博客等级: 大校
  • 技术积分: 2045
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-27 13:27
文章分类

全部博文(254)

文章存档

2015年(1)

2014年(9)

2013年(17)

2012年(30)

2011年(150)

2010年(17)

2009年(28)

2008年(2)

分类: C/C++

2011-11-29 11:27:52

  1. /* objcount.cpp
  2. *类的嵌套,此例可以跟踪程序在任何时候
  3. *有多少该类型的对象
  4. */
  5. #include <iostream>

  6. using namespace std;

  7. class TAnyClass {
  8. private:
  9.     typedef int CLASS_COUNTER;
  10.     static CLASS_COUNTER ClassCount;
  11.     static int GetCount() { return ClassCount; }
  12. public:
  13.     TAnyClass() { ClassCount++; }
  14.     ~TAnyClass() { ClassCount --; }
  15.     static void ShowCount();
  16.     struct ClassStruct {
  17.         int x, y;
  18.         };
  19. };

  20. //Define static member
  21. TAnyClass::CLASS_COUNTER TAnyClass::ClassCount;
  22. TAnyClass globalObject;

  23. int main()
  24. {
  25.     cout << "On entry to program" << endl;
  26.     TAnyClass::ShowCount();

  27.     TAnyClass localObject;
  28.     cout << "After constructing one object" << endl;
  29.     TAnyClass::ShowCount();

  30.     TAnyClass objectA, objectB, objectC;
  31.     cout << "After constructing three objects" << endl;
  32.     TAnyClass::ShowCount();

  33.     TAnyClass * pointer = new TAnyClass;
  34.     cout << "After creating a dynamic object" << endl;
  35.     TAnyClass::ShowCount();
  36.     delete pointer;
  37.     cout << "After deleting the dynamic object" << endl;
  38.     TAnyClass::ShowCount();

  39.     //引用结构体
  40.     TAnyClass::ClassStruct structure;
  41.     structure.x = 1;
  42.     cout << "y == " << structure.y << "x == " << structure.x
  43.          << endl;
  44.     
  45.     return 0;
  46. }

  47. void TAnyClass::ShowCount()
  48. {
  49.     cout << "Number of objects == " << TAnyClass::GetCount();
  50.     cout << endl;
  51. }

类的内部嵌套定义  typedef int CLASS_COUNTER;还有一个示例结构体 struct ClassStruct
及静态类,静态变量不和对象捆绑使用,且不会接收this指针。。



一些不常用的关键字:
implicit:强制调用所需的类构造器,拒绝C++隐式转换成类型
mutable: 类内部函数声明对成员变量不修改时,如:int getvalue()const { counter ++; } 这时编译会报错,
         此时在变量前加上此关键字,允许函数修改此单个变量。


阅读(1419) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~