码迷,mamicode.com
首页 > 编程语言 > 详细

c++,静态成员函数

时间:2014-11-12 16:24:44      阅读:244      评论:0      收藏:0      [点我收藏+]

标签: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
*/

 

c++,静态成员函数

标签:style   blog   io   color   ar   os   sp   strong   div   

原文地址:http://www.cnblogs.com/mylinux/p/4092415.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!