C++ 我们可以用双引号初始化对象吗

C++ 我们可以用双引号初始化对象吗,c++,C++,有可能做像这样的事情吗 Class obj=""; 是否可以使用“”初始化对象?我在一次采访中看到了这一点,采访者提到这是正确的 更新: 谢谢你的回答。为了将来读者的利益,我做了一些搜索,这叫做复制构造函数。一些链接如 可能有用。是的,它确实有效。下面是它工作的示例代码: #include <iostream> #include <string> using namespace std; class Class { private: string data;

有可能做像这样的事情吗

Class obj="";
是否可以使用“”初始化对象?我在一次采访中看到了这一点,采访者提到这是正确的

更新: 谢谢你的回答。为了将来读者的利益,我做了一些搜索,这叫做复制构造函数。一些链接如
可能有用。

是的,它确实有效。下面是它工作的示例代码:

#include <iostream>
#include <string>

using namespace std;

class Class {
private:
    string data;
public:
    Class (const char* foo) {
        data = foo;
    }
};

int main()
{
    Class foo="bar";

    return 0;
}
#包括
#包括
使用名称空间std;
班级{
私人:
字符串数据;
公众:
类(常量字符*foo){
数据=foo;
}
};
int main()
{
Class foo=“bar”;
返回0;
}

如果“类”是C++类,这个C++是否有效取决于类的构造函数。但是,这肯定是有效的C++。@ SAMVARSHIVCHK可以知道什么样的构造函数允许这个?@ WiLaMe0.7,例如<代码>类< /C> >构造函数以<代码> const char */COD>为参数。或者<代码> STD::String < /C> >。请不要在问题本身中回答。在这种情况下,为什么我们使用类Foo=新类(“bar”);似乎有编译错误?@william007这是因为“new Class(…)”返回一个指针,所以它应该是Class*foo=new Class(“bar”)。另外,如果您不需要指针,那么它应该是Class foo=Class(“bar”)或Class foo(“bar”)或Class foo=“bar”。感谢Andros,格式
Class foo=“bar”
能支持>=2个构造函数参数吗?@william007肯定不行。如果是这样的话,它看起来会很难看(至少对我来说),所以我会坚持使用括号。@william007看起来你应该开始了。