标签:style blog io color ar os sp strong div
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;//china void 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:16 country:111 */
标签:style blog io color ar os sp strong div
原文地址:http://www.cnblogs.com/mylinux/p/4092415.html