在C++中,如果要在构造函数中获取const std::string&
参数,同时处理NULL,可以通过重载构造函数来实现。具体实现方法如下:
#include<iostream>
#include<string>
class MyClass {
public:
MyClass() : str_("") {}
MyClass(const std::string& str) : str_(str) {}
MyClass(const char* str) : str_(str ? str : "") {}
void print() const {
std::cout << "String: "<< str_<< std::endl;
}
private:
std::string str_;
};
int main() {
MyClass obj1;
obj1.print(); // 输出:String:
std::string str = "Hello, World!";
MyClass obj2(str);
obj2.print(); // 输出:String: Hello, World!
MyClass obj3(NULL);
obj3.print(); // 输出:String:
return 0;
}
在这个例子中,我们定义了一个MyClass
类,它有三个构造函数:
str_
初始化为空字符串。const std::string&
类型的参数,将str_
初始化为该参数。const char*
类型的参数,如果该参数不为NULL
,则将str_
初始化为该参数指向的字符串,否则将str_
初始化为空字符串。在main
函数中,我们分别创建了三个MyClass
对象,分别调用了print
函数,输出了对象中的字符串。其中,第一个对象使用了默认构造函数,第二个对象使用了第一个构造函数,第三个对象使用了第二个构造函数。
领取专属 10元无门槛券
手把手带您无忧上云