学习使用Boost共享指针,控制台输出正确吗
Learning to use Boost Shared Pointers, Console Output Correct?
我有几个类:数组、形状、点。点是一种形状。
我创建了一个ShapePtr数组,并为第一个元素指定了一个点。当我打印数组的第一个元素时,它只显示一个奇怪的数字(我想是内存位置?)。这正常吗?有没有办法打印分配给该位置的点?还是Point已经被摧毁了?我的主要内容如下:
{
// Typedef for a shared pointer to shape
typedef boost::shared_ptr<Shape> ShapePtr;
// a typedef for an array with shapes stored as shared pointers.
typedef Array<ShapePtr> ShapeArray;
ShapeArray my_ShapeArray;
ShapePtr my_Point (new Point(3.1459));
my_ShapeArray[0] = my_Point;
cout << my_ShapeArray[0] << endl;
return 0;
}
输出是(我对构造函数和析构函数有一些评论):
阵列控制器调用(默认)
形状生成器调用(默认)
点控制器调用(默认)
002DDA20
点析构函数调用
形状析构函数调用
数组析构函数调用
我有点困惑,因为在打印点之后似乎会调用析构函数,但它似乎只是打印内存地址,而不是打印点。你能帮我理解吗?谢谢
指针(大致上)是一个内存位置,所以当您打印指针时,就会得到它。如果你想把对象放在那个内存位置,你可以在前面放一个星号来取消引用:
cout << *my_ShapeArray[0] << endl;
相关文章:
- C++:将控制台输出存储在宏中更好吗
- 在while循环中输入带有std::cin的字符串后,控制台会输出大量胡言乱语
- 如何修复此iFile以将.txt输出到控制台
- 在Qt Creator中,如何在连接到正在运行的进程后查看控制台输出
- 控制台输出在 Qt5 中未正确显示
- 有人可以向我解释为什么控制台输出 0 吗?
- 如何从 Win32 C++ 应用程序输出到父控制台窗口?
- 为什么即使使用 for 循环遍历我的向量,它也没有输出到控制台?(C++)
- 使用 std::string_view 的子字符串控制台输出
- 从文件读取并通过矢量输出到控制台
- 在这种情况下,如何防止C++输出/控制台窗体关闭
- 如何在C++中居中输出控制台窗口
- boost::log 输出到 Visual Studio 输出控制台 - 为格式添加额外的 LF/CR
- C++:我如何保持我的程序(输出控制台)的活力
- 如何在Visual Studio中设置输出控制台宽度
- 如何在Qt GUI应用程序中嵌入输出控制台窗口
- 在Visual Studio中使用GLUT库,没有错误,但输出控制台不起作用
- 只在调试模式下输出控制台
- 简单的输入/输出控制台应用程序,不按给定的顺序(结构)打印问题
- Visual Studio 2012 - 嵌入式输出控制台,而不是cmd