程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++11 新特性之 nullptr

C++11 新特性之 nullptr

編輯:C++入門知識

對於C和C++程序員來說,一定不會對NULL感到陌生。但是C和C++中的NULL卻不等價。NULL表示指針不指向任何對象。

NULL是一個宏定義

在C中將NULL定義為void*指針值為0

#define NULL (void*)0

在C++中,NULL被定義為常數0

#ifndef NULL  
#ifdef __cplusplus  
#define NULL    0  
#else  
#define NULL    ((void *)0)  
#endif  
#endif  

考慮下面的程序

#include 
#include 
using namespace std;

void f(int i)
{
	cout << "f(int)" << endl;
}

void f(void* ptr)
{
	cout << "f(void*)" << endl;
}

int main()
{
	f(NULL); 
	return 0;
}

輸出結果:

\


<喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+bnVsbHB0csihtPrBy9PQtO3O88fjz/K1xE5VTEwsbnVsbHB0cr/J0tSxu8DtveLOqta4z/JOVUxMtcTWuNXrPC9wPgo8cD48L3A+CjxwcmUgY2xhc3M9"brush:java;">#include #include using namespace std; void f(int i) { cout << "f(int)" << endl; } void f(void* ptr) { cout << "f(void*)" << endl; } int main() { //f(NULL); f(0); //輸出為f(int) f(nullptr); //輸出為f(void*) return 0; }
nullptr適用於所有指針類別,包括函數指針和成員指針

const char *pc = str.c_str();
if (pc != nullptr)
	cout << pc << endl;
void (*func)() = nullptr;

不能將nullptr賦值給整形

int i1 = nullptr;    //error
if (i1 == nullptr){} //error
if (nullptr){}       //error
nullptr = 0;         //error







  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved