c++ - 是否因为以下原因在堆中实例化一个对象?

标签 c++

我有一个类,构造函数接受一个参数。例如,

class Entity
{
private:
    int number_;
public:
    Entity(int number):number_(number)
    {
       std::cout << "Entity object created";
    }
}

// header
class SuperEntity
{
private:
   Entity *entity_;

public:
   SuperEntity(int value);
};

// source
SuperEntity::SuperEntity(int value)
{
    entity_ = new Entity(value);
}

SuperEntity 有一个私有(private)成员 Entity。因为为了实例化 Entity 您需要将 int 传递给它的构造函数并且不能完成声明文件 (superentity.h) 因为实例化Entity所需的int值尚不可用,是否可以在SuperEntity中动态分配Entity'构造函数?这是一种不好的做法吗?谢谢。

最佳答案

正如 Dietmar 所说,使用成员初始化列表:

class SuperEntity
{
    Entity entity_;

public:
    SuperEntity( int value )
        : entity_{ value }
    {}
};

关于c++ - 是否因为以下原因在堆中实例化一个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48046857/

相关文章:

C++如何在有限的时间内等待键盘输入

c++ - 在 C/C++ 中创建 Windows 服务的任何示例? (无图形用户界面)

c++ - cout << Boost::posix_time 的奇怪行为

c++ - 为什么插入相同数量的集合会根据不同的方法有不同的运行时间?

c++ - curand, thrust::随机

c++ - #include 彼此的两个类出错

C++ 动态构造函数

c++ - 类函数错误C++

c++ - ostringstream 的字符串构造函数的目的是什么?

c++ - 如何在 VSCode 上自动创建 C++ 类