Chinaunix首页 | 论坛 | 博客
  • 博客访问: 655182
  • 博文数量: 150
  • 博客积分: 4070
  • 博客等级: 中校
  • 技术积分: 1795
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-23 21:44
文章分类

全部博文(150)

文章存档

2012年(1)

2011年(123)

2010年(26)

分类: C/C++

2011-06-13 09:49:29

一、类的基本特征
    抽象、封装、继承、多态。
 
二、类的成员
    数据、函数、类型别名 
类型别名例子:
class Test
{
public:
 typedef int Integer;
 A(Integer x)
 {
  a = x;
 } 
 void Show()
 {
  printf("%d\n", a);
 }
private:
 Integer a;
};
 
三、类访问标号
public、private、protected
 
四、static类成员
    类的static成员分为static数据成员与static成员函数,类的静态成员为所有对象共享。
    类的static成员在访问前需要初始化,格式为:
    <数据类型>类名::静态成员名=初始值;
    访问静态成员变量为:<类名>::成员名
    类的静态成员没有this指针,因此静态成员函数不能访问非静态成员变量。
    修饰符限制了成员的存储域和可见性。
    static成员变量存储在静态存储区,静态存储区中存储全局变量和静态变量;可见性主要体现在全局变量和函数,当有多个文件时,全局变量和函数可以在多个文件中使用,但是如果限制为static,则限制为只能在定义的文件中使用。
    局部的static变量跟普通的变量的区别在于,变量值得持久性。
   
五、const成员
    const成员变量必须通过构造函数的初始化列表初始化,格式为:
    类名(参数列表):A(实参)...{   }
    类也可以有const成员函数,const成员函数只能访问类的成员变量,而不能修改类的成员变量。 
 
六、构造函数
    构造函数分为:普通的构造函数、复制(拷贝)构造函数
    普通构造函数可以被重载,从而为初始化对象提供了不同的方式。
    在定义类的时候会默认生成一个构造函数,如果用户不重新定义,则定义对象时会使用默认的构造函数。构造函数可以分为带有参数或不带参数,或带有默认值的构造函数。
    复制(拷贝)构造函数:是一种特殊的构造函数,它的参数是类的对象的const引用。其目的是用一个对象去初始化另一个对象。格式为:
    类名(const 类名 &对象)   
 
七、友元函数或友元类 
    由于只有类的公有接口才是与外界的接口,但是有时为了再函数中直接访问类的私有变量,可以通过将函数设为友元函数来实现。
    友元函数例子:
  1. #include <iostream>
  2. #include <string.h>
  3. using namespace std;

  4. class Point;
  5. void Show(const Point &p);

  6. class Point
  7. {
  8. public:
  9.     Point(int a, int b)
  10.     {
  11.         x = a;
  12.         y = b;
  13.     }
  14.     friend void Show(const Point &p);
  15. private:
  16.     int x;
  17.     int y;
  18. };

  19. void Show(const Point &p)
  20. {
  21.     cout<<p.x<<" "<<p.y<<endl;
  22. }

  23. int main()
  24. {
  25.     Point p(100, 100);
  26.     Show(p);

  27.     return 0;
  28. }

友元类,则该类中的所有函数都是友元函数,都可以访问类中的私有变量。

  1. #include <iostream>
  2. using namespace std;

  3. class AAA;

  4. class Point
  5. {
  6. public:
  7.     Point(int a, int b)
  8.     {
  9.         x = a;
  10.         y = b;
  11.     }
  12.     friend class AAA;
  13. private:
  14.     int x;
  15.     int y;
  16. };

  17. class AAA
  18. {
  19. public:
  20.     void Show(const Point &p)
  21.     {
  22.         cout<<p.x<<" "<<p.y<<endl;
  23.     }
  24.     void Move(Point &p, int x, int y)
  25.     {
  26.         p.x += x;
  27.         p.y += y;
  28.     }
  29. };

  30. int main()
  31. {
  32.     Point p(100, 100);
  33.     AAA aa;
  34.     aa.Show(p);
  35.     aa.Move(p, 10, 10);
  36.     aa.Show(p);
  37.     return 0;
  38. }
阅读(581) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~