C++11 将对象构造为ostream输出的一部分
对于类声明,如下所示:C++11 将对象构造为ostream输出的一部分,c++11,object,ostream,construction,C++11,Object,Ostream,Construction,对于类声明,如下所示: class A{ public: A(int); ~A() private: int a; }; 和构造函数定义如下: A::A(int i){ a = i; cout << a << endl; } A::A(inti){ a=i; cout您不能声明obj并将其输出到同一行。如果希望打印后obj保持可用,请执行以下操作: A obj(i); cout << "The value is " << obj; 不能在
class A{
public:
A(int);
~A()
private:
int a;
};
和构造函数定义如下:
A::A(int i){
a = i;
cout << a << endl;
}
A::A(inti){
a=i;
cout您不能声明obj
并将其输出到同一行。如果希望打印后obj
保持可用,请执行以下操作:
A obj(i);
cout << "The value is " << obj;
不能在另一行中间有一个声明。
你可以做的是用casting(A)i
动态创建一个A,或者简单的A(i)
,这将把inti
转换成A,然后将其发送到cout
。然后直接丢弃临时A对象
如果您想保留它,您必须在它自己的语句中声明它的名称。您需要首先在第一个代码行上输出消息“value is”。在第二个代码行上创建类型为a的对象obj,该对象将输出i
int main()
{
int i;
cout << "The value is ";
A obj(i);
return 0;
}
intmain()
{
int i;
cout@dasblinkenlight这不起作用,因为我在cout中使用(I)会得到错误“操作数到二进制无效”。
cout << "The value is " << A(i);
int main()
{
int i;
cout << "The value is ";
A obj(i);
return 0;
}