C++ nullstr

在C++11之前,NULL常用于表示空指针,但其本质是常量0,可能导致函数重载时的歧义。C++11引入了nullptr关键字,专用于表示空指针,避免了这种问题。示例代码中,func(NULL)因与两个函数参数类型匹配而产生编译错误,而func(nullptr)则明确调用了接受char*的版本。
摘要由CSDN通过智能技术生成

C++11之前使用NULL表示空指针,C++11后改用nullptr表示空指针,因为NULL其实是常量0,会引起歧义。

看下面的例子:

#include<iostream>
using namespace std;
//定义fun函数
void func(char *str){
	cout<<"char * func"<<endl;
} 
//重载 
void func(int val){
	cout<<"int func"<<endl;
}
void test01(){
	
	//func(NULL); //引起歧义 因为NULL是常量0,上面两个函数都符合,因为C++11后使用nullptr 
	func(nullptr);//调用char*版本 
	
} 
int main(){
	
	test01();
	return 0;
	
}

当调用func(NULL)时编译器会报错,不知道调用哪个函数,因为NULL表示常量0,都符合上面两个函数的形参列表,

如果使用func(nullptr)就不会出现这个问题

优化这一段sql:SELECT user_worker.Title AS worker, COUNT(CASE WHEN (CASE WHEN bl.Checker = 0 THEN '' WHEN bl.Checker > 0 AND bl.Audited = -1 THEN 'NG' WHEN bl.Checker > 0 AND bl.Audited = 1 THEN 'OK' END) ='' THEN 1 END) as nullstr, COUNT(CASE WHEN (CASE WHEN bl.Checker = 0 THEN '' WHEN bl.Checker > 0 AND bl.Audited = -1 THEN 'NG' WHEN bl.Checker > 0 AND bl.Audited = 1 THEN 'OK' END) = 'OK' THEN 1 END) as okstr, COUNT(CASE WHEN (CASE WHEN bl.Checker = 0 THEN '' WHEN bl.Checker > 0 AND bl.Audited = -1 THEN 'NG' WHEN bl.Checker > 0 AND bl.Audited = 1 THEN 'OK' END) = 'NG' THEN 1 END) as NGstr, (COUNT(CASE WHEN (CASE WHEN bl.Checker = 0 THEN '' WHEN bl.Checker > 0 AND bl.Audited = -1 THEN 'NG' WHEN bl.Checker > 0 AND bl.Audited = 1 THEN 'OK' END) = 'OK' THEN 1 END) +COUNT(CASE WHEN (CASE WHEN bl.Checker = 0 THEN '' WHEN bl.Checker > 0 AND bl.Audited = -1 THEN 'NG' WHEN bl.Checker > 0 AND bl.Audited = 1 THEN 'OK' END) ='' THEN 1 END) )as totalOKStr FROM [bdWorkOrderList] bl LEFT JOIN [bdWorkOrder] bd ON bl.OrderID = bd.ID LEFT JOIN [reportMJWXJL] rwx ON bl.OrderID = rwx.OrderID LEFT JOIN [reportMJQHLHJL] rqh ON bl.OrderID = rqh.OrderID LEFT JOIN user_worker ON user_worker.ID = bl.Worker WHERE bd.IsDeleted = 0 AND bl.StepName LIKE 'Maker%' AND bl.StepName IN ('Maker修模', 'maker切换料号', 'Maker模具保养') AND DATEPART(MONTH, bl.StartTime) = DATEPART(MONTH, GETDATE()) and DATEPART(YEAR, bl.StartTime) = DATEPART(YEAR, GETDATE()) GROUP BY user_worker.Title)
最新发布
07-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值