简单问题:以下陈述是否相同?或者是第二个在幕后做更隐含的事情(如果是这样的话,是什么?)
myClass x(3);
myClass x = myClass(3);
Run Code Online (Sandbox Code Playgroud)
谢谢!
我希望能够从基类初始化派生类,如下所示:
class X {
public:
X() : m(3) {}
int m;
};
class Y : public X {
public:
Y() {}
Y(const & X a) : X(a) {}
};
Run Code Online (Sandbox Code Playgroud)
这样做有什么危险或不寻常的吗?我想要它,因为我正在反序列化一些我不会立即知道的类型的对象,所以我基本上想要使用X作为一些临时存储,而我正在读取整个序列化文件,然后创建我的Y对象(和W,X,Y objs,取决于数据)之后使用该数据.也许有一种我更容易丢失的方式.
谢谢!
说我上课了:
class A
{
public:
A() {}
};
Run Code Online (Sandbox Code Playgroud)
和功能:
void x(const A & s) {}
Run Code Online (Sandbox Code Playgroud)
我这样做:
x(A());
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释有关通过引用传递临时对象的规则吗?就编译器允许的内容而言,在需要const的地方,如果发生隐式副本等等.从游戏中看,你似乎需要有意义的const,但有关于所有这些的正式规则吗?
谢谢!