我在面向對象的方法和C++編程的新手,以及: 我的問題是:如何能未實例化的任何對象的類指針可以調用的成員函數那個班。下面是我今天調用非靜態成員函數,而無需創建一個實例
#include <iostream>
class Base{
public:
Base(){
std::cout << "Base C-tor is called " << std::endl;
}
void fun(){
std::cout << "Base fun() is called " << std::endl;
}
void sorrow(){
std::cout << "Base Sorrow is called " << std::endl;
}
~Base(){
std::cout << "Base D-tor is called " << std::endl;
}
};
int main(){
Base *b1;
b1->fun();
b1->sorrow();
}
下面試圖運行的代碼是這段代碼的輸出:
Base fun() is called
Base Sorrow is called
這是不確定的行爲,而不是_working code_。 – user0042
其中不從未訪問任何數據成員中的對象的函數應該是靜態的。你所展示的設計是否有用也是有問題的。編寫像函數一樣的C並添加類並不是面向對象的編程。訪問未初始化的指針只是未定義的行爲。編譯器優化未使用的指針離開並不意味着你寫有效的代碼在所有。 – Klaus