【发布时间】:2014-07-25 17:48:49
【问题描述】:
我在 C++ 中有一个可能非常简单的问题。 假设我将类定义为:
类 PS { 私人:
int value; int m; public: PS(); PS(int value, int m); PS(int m); };
现在我想用这种类型的元素定义一个数组。例如,
PS t[3];
但是,我希望这个数组中的所有元素都具有 m=2。我该怎么做?我假设我必须以某种方式使用继承,对吗? 所以例如我不想做这样的事情:
>PS t[3];
>t[0].PS(2);
>t[1].PS(2);
>t[2].PS(2);
我想为 t 的所有元素做一场表演。
【问题讨论】:
-
C++ 中没有“空白”之类的东西。如果你避免初始化一个变量,那么它的值是未定义的(又名“垃圾”)。
-
决定你有做什么,而不是你不想要/不喜欢什么。花点时间正确安排问题,查看答案和编辑对您没有多大帮助!
-
数据结构(例如数组)和对象数组(例如 PS 对象数组)之间存在差异。假设您有一个成员变量“M”。您创建一个构造函数来初始化您的成员变量“M”,如下所示:PS(){m = 2;}。现在每次创建 PS 对象的实例时,例如: PS *t = new PS();然后调用 PS->m,你会得到 m = 2,一切都在构造函数中完成。现在,您可以使用 for 循环在长度为 3 或更大的数组上添加 PS Object 的指针。这个问题与继承无关,继承是多个类具有相同的属性。
-
我认为这与
PS t[3](2,0);之类的声明有关,但我知道它无效 (test.cpp:7:25: error: bad array initializer pair<int,int> T[3](0,0);)。
标签: c++ arrays inheritance