静态成员函数,静态成员数据,常成员

原创 2016年08月30日 19:32:54
#include<iostream>

using namespace std;

/*

为什么要使用静态成员变量,如果使用全局变量的话,太危险,容易出错。

*/

#if 0

int count;

class student

{

    public:

        student():m_count(0){m_count++;count++;}

        void print(){cout<<m_count<<","<<count<<endl;}

    private:

        int m_count;

};

int main()

{

    student a,b,c,d,e;

    a.print();

    b.print();

    return 0;

}

#endif

#if 0

/*

静态成员变量:所有成员可以调用,并且受保护。类本身不占空间。

*/

class student

{

public:

   student(){m_count++;}

   void print(){cout<<m_count<<endl;}

private:

   static int m_count;

};

 int student::m_count;

int main()

{

 student a,b,c,d,e;

 a.print();

 b.print();

 c.print();

 d.print();

 e.print();

}

#endif

/*

a.h a.cpp test.cpp

    静态成员的初始化一般放在a.cpp当中

*/

#if 0

class A

{

public:

   A(){m_i++;cout<<m_i<<endl;}

   void print(){cout<<m_i<<endl;}

   static void test(A &a)

      {

       m_i = 6;

       a.m_j = 9;

      }//静态成员函数中不能直接访问非静态成员

//静态成员函数没有this指针,不能直接访问非静态成员,非静态成员函数里面可以访问静态成员或非静态成员。

private:

   static int m_i;

   int m_j;

};

int A::m_i;

int main()

{

 A a,b,c,d;

 a.print();

 a.test(b);

 b.print();

 return 0;

};

#endif

#if 0



class B;

class A

{

 public:

     A(int i = 0):m_i(i){}

     friend void fn(A &a,B &b);

 private:

     int m_i;

};

class B

{

 public:

    B(int j = 0):m_j(j){}

    friend void fn(A &a,B &b);

 private:

    int m_j;

};

void fn(A &a,B &b)

{

  cout<<a.m_i+b.m_j<<endl;

}

int main()

{

 A a(5);

 B b(7);

 fn(a,b);

}

#endif

/*

友元不是类的成员函数(只是朋友),不能在类里面定义

友元关系是单向的

友元关系不能继承

*/

#if 0

class B;

class A

{

 public:

    A(int i = 0):m_i(i){}

    void fn(B &b);

 private:

    int m_i;

};

class B

{

 public:

    B(int j = 0):m_j(j){}

    friend void A::fn(B &b);

 private:

    int m_j;

};

void A::fn(B &b)

{

 cout<<m_i + b.m_j<<endl;

}

int main()

{

 A a(4);

 B b(3);

 a.fn(b);

 return 0;

}

#endif

C++类特殊数据成员总结(常数据成员、静态数据成员、静态常数据成员)

一、引言 C++中类的成员变量有以下几种特殊的类型: 1、常成员变量 2、静态成员变量 3、静态常成员变量(基本数据类型) 4、静态常成员变量(自定义数据类型) 二、常成员变量 C+...
  • scorpion_zs
  • scorpion_zs
  • 2016年02月15日 11:32
  • 889

C++类的常成员函数以及静态成员函数

1 常成员函数 1.1声明:函数名(形参列表)const; 1.2说明: 1)const是函数类型的一部分,在实现部分也要带上该关键字; 2)const关键字可以用于对重载函数的区分; 3)...
  • scorpion_zs
  • scorpion_zs
  • 2016年02月15日 11:37
  • 986

C++类的静态成员,友元和常成员常对象

一、类的静态成员 静态成员是解决同一个类的不同对象之间数据和函数共享问题的。 1.静态数据成员(static data member) (1)静态数据成员在每个类中只有一个拷贝,由所有该类的对象...
  • zllbuaa
  • zllbuaa
  • 2014年03月21日 15:35
  • 973

c++关于静态、常方法的定义与调用和静态、常成员的初始化笔记

一、c++类里的成员,不管是const,还是static成员都不能直接,初始化;如:   class student { private:             int sno=2001;     ...
  • lileiyuyanqin
  • lileiyuyanqin
  • 2016年11月19日 23:11
  • 275

C++类特殊成员变量(引用、静态、常成员变量)的初始化操作

有些成员变量的数据类型比较特别,它们的初始化方式也和普通数据类型的成员变量有所不同。这些特殊的类型的成员变量包括: a.引用 b.常量 c.静态 d.静态常量(整型) e.静态常量(非整型)...
  • yusiguyuan
  • yusiguyuan
  • 2014年11月09日 16:41
  • 1239

C++中(const)常数据成员初始化

在类中使用const关键字可以修饰数据成员和成员函数或对象,分别称为数据成员、常成员函数和常对象。 1常量成员 常量成员包括常数据成员、静态常数成员和常引用。常数据成员和常引用的初始化只能通过构造...
  • qhs1573
  • qhs1573
  • 2013年11月03日 01:42
  • 2417

C++类中的静态数据成员--static

使用静态成员的目的是为了解决数据共享的的问题。
  • lanzhihui_10086
  • lanzhihui_10086
  • 2014年09月08日 17:32
  • 2330

静态数据成员和静态成员函数

静态数据成员 静态成员函数
  • jsjliuyun
  • jsjliuyun
  • 2014年06月08日 09:58
  • 2937

静态数据成员只能在类体外,且通过函数体进行初始化(静态数据成员是在程序编译时被分配空间的)

1 静态数据成员不能用参数初始化表对静态数据成员初始化 (1) 如果声明了类而未定义对象,则类的一般数据成员是不占内存空间的,只有在定义对象时,才为对象的数据成员分配空间。但是静态数据成员不属于某一个...
  • sandwich125
  • sandwich125
  • 2017年03月09日 10:30
  • 954

C++静态数据成员的引用

静态数据成员可以初始化,但只能在类体外进行初始化 如: Int Box::height=10; 不能够使用参数初始化列表对静态数据成员进行初始化。#include using namespace...
  • andrewgithub
  • andrewgithub
  • 2017年03月04日 22:51
  • 622
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:静态成员函数,静态成员数据,常成员
举报原因:
原因补充:

(最多只允许输入30个字)