C++中静态函数与成员用法简单的小结
详解:静态成员,是属于整个类,而不是属于某一个对象,记住是你定义的那个类,静态成员变量只存储一份部分给与所有对象使用。所以在所有的对象是可以共享的,使用静态成员变量实现了多个对象之间的数据共享且不会暴露隐藏的原则,具有安全性以及节约空间,实在是居家必备。
静态成员声明以及定义时,必须加一个标识符static,使用方法是:<类名>::<静态成员名>。
1. 首先:不能通过类名来调用类的非静态成员函数。
#Include<iostream>
using namespace std;
class CS//类名一般C开头,习惯
{public:
static void output()
{cout<<"Hello world!"<<endl;}
void output01()
{{cout<<"hello world!"<<endl;} }
};
void main()
{
CS.output();//可以这样做
CS.output01();//系统会报错,,所以不能通过类名来调用类的非静态成员函数。
}
2.类的对象可以使用静态成员函数和非静态成员函数。
#Include<iostream>
using namespace std;
class CS//类名一般C开头,习惯
{public:
static void output()
{cout<<"Hello world!"<<endl;}
void output01()
{{cout<<"hello world!"<<endl;} }
};
void main()
{
CS s;
s.output();//正确·
CS.output();//可以这样做
CS.output01();//系统会报错,,所以不能通过类名来调用类的非静态成员函数。
}
3.静态成员函数中不能引用非静态成员。
#Include<iostream>
using namespace std;
class CS//类名一般C开头,习惯
{public:
static void output()
{cout<<"Hello world!"<<endl;cout<<m_01<<endl;}
void output01()
{cout<<"hello world!"<<endl;} //报错
private:
int m_01=0;
};
void main()
{
CS.output();//可以这样做
CS.output01();//系统会报错,,
}
4.在类的非静态成员函数中使用类的静态成员,但反之则不行。
class CS//类名一般C开头,习惯
{public:
static void output()
{cout<<"Hello world!"<<endl;cout<<m_01<<endl;} //报错
void output01()
{cout<<"hello world!"<<endl; static void output();} //正确·
private:
int m_01=0;
};
5.在使用静态成员变量前,必须給变量初始化,否则调试无问题,但是编译不成功,所以必须初始化例子:int Point::m_nPointCount = 0;如上也有。
博主博客链接里面有大量的C/C++学习资料以及python等:https://blog.csdn.net/libo_dian/article/details/86649592 当然也欢迎来QQ1458079840咨询,大家多交流,互帮互助。今天是2019年2月14号,情人节,祝大家情人节,,快乐T_T。 |