【发布时间】:2016-06-30 22:26:58
【问题描述】:
我正在写一个struct _Point3d 并将其类型定义为Point3d,并在Point3d 旁边提供了一个指针声明PPoint3d(请参阅代码)。有一个构造函数初始化struct 的成员。我在这里有两个疑问。
typedef struct _Point3d
{
float x;
float y;
float z;
_Point3d(float _x, float _y, float _z) : x(_x), y(_y), z(_z)
{
}
}Point3d, *PPoint3d;
一个:
这种在结构名称(typedef)之后提供指针的约定到底意味着什么?前提是我们可以像这样创建Point3d 的指针
Point3d* _ppoint2 = new Point3d(1.0, 0.0, 0.0);
两个:
这两种不同的方式创建Point3d的实例有什么区别吗?
PPoint3d _ppoint1 = new Point3d(0.0, 1.0, 0.0);
Point3d* _ppoint2 = new Point3d(1.0, 0.0, 0.0);
【问题讨论】:
-
1) 我认为这里的指针类型定义是不喜欢语言语法的怪人的工作。 2)没有区别。 3) 保留全局命名空间中以下划线开头的名称。
-
当你使用
new时,为什么这个标签是C?如果这仅适用于 C++,则声明不遵循 C++ 声明和使用类的约定。 -
实际上我根本看不到在这里使用 typedef 的意义。恕我直言,写
struct Point3d { float x,y,z;}更简单、更清晰,不需要typedef -
你以前写过很多C代码吧?所以,忘掉一切,像学习一门新语言一样学习 C++
标签: c++ pointers struct typedef