c++ 靜態成員函數

靜態成員函數可以不以捆綁的方式調用,靜態成員函數被調用時,沒有當前對象的信息,所以靜態成員函數不能訪問數據成員,只能訪問靜態數據成員。但可以通過傳遞對象參數進去從而訪問成員。

// class_test.cpp : 定義控制檯應用程序的入口點。
//
#include <iostream>
using namespace std;

class Student{
private:
    string name;
    static int number;
public:
    void set(string str){
        name = str;
        ++number;
    }
    static void printNumber(){
    cout<<number<<"total number\n";
}
    void print(){
        cout << name.c_str() << "-> studnets are " << number << " numbers\n" << endl;
    }
};
int Student::number = 0;
void fn(){
    Student s1;
    s1.set("Jenny");
    Student s2;
    s2.set("Randy");
    s1.print();
    s1.printNumber();
}

int main()
{
    Student s;
    s.set("Smith"); 
    fn();
    s.print();
Student::printNumber();//**只有靜態成員函數纔可以這樣調用,普通成員函數只能:對象.函數**。
    return 0;
}
static int printNumber(){
cout<<name<<number<<"total numbers"<<endl;
}

//編譯不通過,因爲,靜態成員函數不能訪問非靜態成員變量

可以使用如下傳遞對象參數的途徑訪問:

static int printNumber(Student &s){
    cout<<"my name is<<s.name<<endl;
    cout<<s.number<<endl;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章