C++构造函数混淆

标签 c++ constructor

MyObject obj = new MyObject(para1);

在 Java 中,我总是可以在切换到 C++ 时执行此操作,它会给我一个错误:请求从“MyObject*”转换为非标量类型“MyObject”。

似乎修复它的方法是 MyObject* obj = new MyObject(para1);

如果我想要对象本身而不是指向对象的指针怎么办?

MyObject obj(para1);是唯一适合我的方式吗?

由于我正在从 Java 切换到 C++,我也想知道:

MyObject* obj1 = new MyObject(para1);

如果我打印出 obj1 的值,它将是一个地址。

MyObject obj2(para1);

obj2 的打印输出值是多少?

最佳答案

Would MyObject obj(para1);be the only way that works for me?

是的,这是正常的方式。

What would be the printed-out value for obj2?

如果您没有重载正确的运算符,您将遇到编译器错误。 使用具有以下签名的函数定义对象的打印方式:

std::ostream & operator<<(std::ostream & os, const MyObject & obj);

关于C++构造函数混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8448919/

相关文章:

c++ - 测试依赖于另一个类的静态函数的类

c++ - 构造函数内的错误 C2512 : no appropriate default constructor available: declaration of a object with arguments!

C++ 太多的析构函数调用了这么少的对象

c++ - 为您自己的 STL 容器 C++ 推送 _back

c++ - 关于点数的断言失败,在 OpenCV 的 solvePNP 上

c++ - 声明没有默认构造函数或复制构造函数的成员变量

c++ - 构造函数 C++ 中未定义大小的数组

java - 初始化 block 的行为

c++ - 定义默认的 int 为 unsigned int

c++ - 具有没有任何构造函数的标准布局结构的 RVO