关于std:string作参数的有关问题

关于std::string作参数的问题
func(const char * p_str)
{
}
func(const std::string & str)
{
}
C++程序一般用那个好?
第二种 传入NULL会运行时死机。(NULL在程序中定义为:0),原来一直习惯用第二种。

------解决方案--------------------
这确实是个让人郁闷的问题
我也一直用第二种
但是没有传过NULL
------解决方案--------------------
其实用指针和引用,完全是出于习惯和公司的规范,因为二者的实现都是一样的。
------解决方案--------------------
看到这样的接口,然后还传个NULL,那肯定是调用的人有问题嘛
------解决方案--------------------
像CString或者std::string都可以用来做返回值,但是尽量避免用来作为参数,可能存在浅拷贝的问题,所以如果作为传入参数,请使用C风格字符串,微软的MSDN里也是这么建议的。
------解决方案--------------------
杯具!!!这是代码不严谨的问题