首页 > 代码库 > c++,静态成员函数
c++,静态成员函数
1. 静态成员函数不能引用非静态成员。
2. static成员函数中不能访问普通的成员,但是可通过 类名::成员 访问静态成员。
3. 普通的成员函数中可以访问静态成员。
4.普通的外部函数可以访问静态成员。
#include <iostream>using namespace std ;#include <string>//---------------------------------------------------------------class Demo{//模拟一个人public: int m_age ; char m_name[10] ; static int m_country; Demo(char* s , int age,int country);//构造函数 static void show(void); //介绍自己 void presence(void); //介绍自己 };Demo::Demo(char* s ,int age ,int country=111){ strcpy(this->m_name , s); this->m_age = age ; this->m_country = country;}//---------------------------------------------------------------int Demo::m_country = 111;//chinavoid Demo::show(){ //cout<<"name:"<<m_name<<endl;//error C2597: 对非静态成员“Demo::m_name”的非法引用 //cout<<"age:"<<m_age<<endl;//error C2597: 对非静态成员“Demo::m_age”的非法引用 //cout<<"country:"<<this->m_country<<endl;//error C2355: “this”: 只能在非静态成员函数的内部引用 //cout<<"country:"<<m_country<<endl;//ok 可以访问静态成员 cout<<"country:"<<Demo::m_country<<endl;//ok 可以访问类名::静态成员}void Demo::presence(){ cout<<"name:"<<m_name<<endl; cout<<"age:"<<m_age<<endl; cout<<"country:"<<m_country<<endl;//ok //cout<<"country:"<<this->m_country<<endl;//ok //cout<<"country:"<<Demo::m_country<<endl;//ok}//----------------------------------------------------------------int main(){ Demo demo1("caicai" , 18 , 112); demo1.show(); Demo demo2("benben",16); demo2.show(); demo2.presence();//Demo::m_country是该类对象公有的【地址空间、值】,如本例中demo1、demo2共用。//外部函数main可以直接访问静态成员Demo::m_country。 cout<<"静态成员变量 Demo::m_country="<<Demo::m_country<<endl; cout<<"静态成员变量 demo1.m_country="<<demo1.m_country<<endl; cout<<"静态成员变量 demo2.m_country="<<demo2.m_country<<endl; while(1);}/*country:112 //demo1.show();country:111 //demo2.show();name:benben //demo2.presence();age:16country:111*/
c++,静态成员函数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。