C/C++ 初学简单笔记 —2—

来源:互联网 发布:网络2d游戏排行榜2016 编辑:程序博客网 时间:2024/06/08 03:00
1. 静态成员

静态成员属于类所有,不属于对象。但为所有对象所共享。

因为静态成员不属于对象所有,所以在对象初始化的时候,不会为静态成员分配内存空间。

故在类中,静态成员只是做了一个引用性的声明,必须在类外进行正式的声明。

声明格式: 类型 类名::静态成员名;  // 也可以赋初始值,对于静态成员,系统会自动赋予初始值。
如:
class A
{
    private:
    static int id;
}

int A::id;

访问: A::id  


2.  静态方法,同样为类所有,为对象所共享,类可以直接调用,而不必声明对象来调用  

调用格式: 类名::方法

注意,在静态方法中,可以访问静态成员和静态成员方法。但是不能访问非静态成员变量,

因为此时对象还没有生成,何来的成员变量?

如果要在静态方法中使用成员变量,可以使用别名。
如:
static void display(类名 &对象别名p)
{p.xx=...};


3. 类的友元。

C++为解决效率的需要,提出了一个友元的概念,

只要把某个类外函数声明为该类的友元,就可以直接访问类中的任何成员(public,protect,private)


1)将普通函数声明为类的友元

2)将某个类的成员函数声明为本类的友元函数

3)将某个类声明为本类的友元类


友元都声明在类中,只是说明友元函数有权访问类的所有成员,但并不表明友元函数和友元类属于该类的成员。

友元声明不受权限的限制,声明在哪一行都行。

友元用friend修饰,一般使用对象的别名作为参数


4. 类的嵌套

要有初始化列表,初始化顺序跟初始化列表无关,只于对象声明的顺序有关。

如果没有写,则调用默认的构造函数。

如:
class C
{
   private:
   A a;
   B b;    //  A,B 都是类名
   public:
      C(int a, int b, int c):a(a),b(b) {...};   // 调用 A(int i)构造方法初始化 a

}


2 0
原创粉丝点击