空指標也可以訪問成員函式?
今天在看多型,這一部分,寫了些驗證程式,發現下面的問題:
#include <iostream>
using namespace std;
class Test
{
public:
void TestNullPointer()
{
cout<<"Look, you can access me through a Null Pointer"<<endl;
}
};
int main()
{
Test *p=NULL;
p->TestNullPointer();
}
編譯後執行,可以發現,成員函式被執行了。
不知道該如何解釋?
想想。。。
明白了,解釋如下:
因為這裡的TestNullPointer沒有用到私有成員,就是this指標傳進來,也沒有用到,
所以沒有報錯,如果在函式中使用了成員資料,就會又錯了!
還是對於類的記憶體佈局理解不好..
相關推薦
空指標可以呼叫成員函式?
有下面一個簡單類: class A { public: void fun(){ cout << "I'm class A"<<endl; } }; 用一個空指標呼叫上面的fun函式: A* p
為什麼C++呼叫空指標物件的成員函式可以執行通過
先看一段程式碼:#include <iostream> using namespace std; class B { public: void foo() { cout << "B foo " << endl; } void
空指標也可以訪問成員函式?
今天在看多型,這一部分,寫了些驗證程式,發現下面的問題: #include <iostream> using namespace std; class Test{public: void TestNullPointer() { cout<<
C++----空指標訪問成員函式
//空指標訪問成員函式; class Person { public: void show() { cout << "Person show" << endl; } void showage() { cout << m_Age <
C++類物件空指標訪問成員函式
題目: class A{ public: void test(){printf("test A");} }; int main(){ A*pA=NULL; pA->test(); } 結果是輸出“test A”而不是程式崩潰,原因如下: 一種解
C++類物件空指標訪問成員函式(靜態繫結)
題目: class A{ public: void test(){printf("test A");} }; int main(){ A*pA=NULL; pA->test(); } 結果是輸出“test A”而不是
空指標也能呼叫成員函式?
最近各大公司都在招聘實習生,昨晚,微信公眾號推送了網易的筆試題讓小夥伴們參考,看了第一道題,博主就覺得“嗯,我果然還是見識短哈!”為什麼呢,我們先看看這個程式碼~class cal { publ
[C++]空的物件指標可以呼叫成員函式
include using namespace std; class A{ public: void func() { cout << "hahaha" << endl; } int m_num = 1; }; int main() { A* ptr = NULL; A obj;
詳解this指標--為什麼空的物件指標可以呼叫成員函式
引題 class A{ public: void function() { cout << "I can run" << endl; } }; int main() { A* pa =
C++ 特殊類成員 7-- 7函式指標也可以作為函式的引數 8使用typedef簡化函式指標的宣告
#include <iostream> using namespace std; /*--------------------------------- 17-06 7函式指標也可以作為函式的引數 8使用typedef簡化函式指標的宣告 --------
C++ 函式指標 指向類成員函式
//A類與B類的定義 class A { public: void Test() { cout << "A::Test()" << endl; } }; &
c++中的函式指標和類成員函式指標
// // main.cpp // Demo // // Created by 杜國超 on 16/12/28. // Copyright © 2016年 杜國超. All rights reserved. // #include using namespace std; class MYCla
C++雜談 為什麼類的空指標物件可以訪問類某些的成員函式
class TestObject { public: TestObject() { std::cout << “TestObject!” << std::endl; } ~Tes
關於指向空的物件指標可以訪問類的不包含成員變數的成員函式的原因
#include <iostream> using namespace std; class A { int a; int b; public: void print(){ cout << "abcd"; }
C++ 靜態成員函式 訪問 類成員變數 & 函式指標、函式指標陣列、函式指標陣列指標的使用 & 回撥函式的使用
靜態成員函式可以通過引用類物件訪問類成員變數;test.h#ifndef TEST_H #define TEST_H class Test { public: Test(); Tes
c++中使用空指標呼叫成員函式的理解
使用空指標呼叫成員函式會如何? 舉個例子:base是基類,裡面有兩個函式:non-virtual func2 以及 virtual func1; derived是派生類,使用public繼承自base,裡面有四個函式:virtual func1,non-vi
空指標的成員函式呼叫
我一直認為技術是沒有止境的,不管你怎麼去學,總有你沒有掌握的地方。但是,人,是不能停下腳步的。 今天在檢查一個MFC程式,看到GetSafeHwnd函式,於是讓我想明白到底它比m_hWnd成員變數safe在哪裡?到網上查了一下資料,發現了GetSafeHwnd的
置空指標呼叫成員函式問題
問題由來:new一個自己的類,用完後delete指標,置空NULL 後,打斷點指標為空,但是依舊可以調用出類裡的函式,且編譯通 過了; 總結:在java,Python語言中是做不到這樣的,但是C++中可以,原因是其繫結方式不一樣;
[C++]類的空指標呼叫成員函式後,會發生什麼事?
類的例項呼叫成員函式的原理 其實不管是通過物件例項或指標例項呼叫,其實底層呼叫的過程都是一樣的,都是把當前物件的指標作為一個引數傳遞給被呼叫的成員函式。通過下面的相關例項程式碼進行檢驗: 實驗的C++程式碼 class Student { private: int age; public: Studen
C++中一個類訪問另外一個類的成員變數或者成員函式
1.在一個類中定義另外一個類的成員為指標型別。並用this指標管理物件的記憶體,實現資料的傳遞。 #include <stdio.h> class A { public: A(); ~A(); void SetData(int year, int month, int day);