【问题标题】:C++ : Structs, operator "new", and constC++:结构、运算符“new”和 const
【发布时间】:2015-04-01 19:25:14
【问题描述】:

我将假设性地发言,因为我还没有测试任何东西。我什至不知道从哪里开始。

所以我有一些用值初始化的结构,我希望将它们传递给一个类。但我希望该类的每个实例都拥有自己的这些结构之一的实例,这些结构最初使用相同的值定义。

为了形象化:

struct Car{
int value, mileage,

std::string model_name;
std::string owner;

double insurance_premium} 

Car Porsche, Toyota, Honda;

我将如何,或者甚至有可能创建任何声明为Cars 的新实例?你可以为结构做一个复制构造函数吗?

我的想法是声明和初始化每个Car 对象,然后将它们标记为const。然后也许打电话给他们new。那会不会让我的一切都崩溃?我不知道。

请帮忙。

【问题讨论】:

  • 默认复制和分配应该适用于此,即Car newCar = Porsche;
  • 你已经有一个编译器定义的默认复制构造函数(和赋值运算符),它完全符合你的需要。
  • @AlejandroDíaz M'kay,谢谢。
  • @molbdnilo 好的,谢谢。

标签: c++ struct constants new-operator


【解决方案1】:

在 C++ 中,classstruct 之间没有区别,只是 struct 的成员默认为 publicclass 默认为 private。你可以对一个人做的任何其他事情都可以对另一个人做。

【讨论】:

  • 那么,我可以只定义一个复制构造函数并创建相同结构的相同版本吗?
  • 你可以。你到底想做什么?
  • @neutralboolean:C++ 编译器会自动创建一个复制构造函数——无需自己定义。
  • 我想定义一个Car的对象,例如“Object1”,然后能够创建另一个与 Object1 具有相同成员值的对象,而无需手动使用相同的值进行初始化。
  • @neutralboolean:这正是复制构造函数所做的。如果你使用编译器管理的类型并让编译器为你生成一个默认的复制构造函数,你就可以免费获得所有这些功能,你不必为它编写任何代码。只需将一个对象实例分配给另一个,让编译器处理其余的。
猜你喜欢
  • 2014-01-22
  • 2013-06-05
  • 1970-01-01
  • 2011-06-11
  • 1970-01-01
  • 1970-01-01
  • 2011-05-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多