在C++ 如何在堆中创建一个类的对象? 谢谢!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在C++ 如何在堆中创建一个类的对象? 谢谢!相关的知识,希望对你有一定的参考价值。

一种是在栈上创建,形式如下:
CSomeClass someObject;
一种是在堆上创建(动态分配),形式如下:
CSomeClass *pSomeObject = new CSomeClass();
C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所的D.M.Ritchie于1972年推出,1978年后,C语言已先后被移植到大、中、小及微型机上,它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画,具体应用比如单片机以及嵌入式系统开发。
参考技术A 一种是在栈上创建,形式如下:

CSomeClass someObject;

一种是在堆上创建(动态分配),形式如下:

CSomeClass *pSomeObject = new CSomeClass();本回答被提问者和网友采纳
参考技术B new是堆中创建对象的方法,例如CWnd * m_pWnd=new CWnd();楼上回答的很好了

在 C++ 中使用另一个类的对象计数在一个类中创建一个数组

【中文标题】在 C++ 中使用另一个类的对象计数在一个类中创建一个数组【英文标题】:Making an array in a class with object count of another class in C++ 【发布时间】:2020-04-04 06:50:23 【问题描述】:

如果我们在 c++ 中有两个类 Movie 和 Movies 会怎样。 Movie 类具有与该类关联的所有属性和方法。而 Movies 类是 Movie 对象的集合。所以我的理解是,我们必须在movies类中创建一个数组,其中包含movie类的所有对象,但是我们怎样才能以这种方式编写movies类的代码呢?

【问题讨论】:

但是我们怎样才能为电影类编写代码呢? 就像任何其他程序一样,您可以按照正确的顺序一个接一个地放置字符。我的建议是您查阅您的编程参考资料,然后尝试自己解决问题。如有必要,请询问有关尝试的问题。 您还需要了解使用类的基本概念。看看quora.com/When-should-I-use-classes-in-C++ 【参考方案1】:

使用向量比使用数组更好

#include <vector>

class Movie

    ...
;

class Movies

public:
    ...
private:
    std::vector<Movie> data;
;

至于班上的其他人,这完全取决于你。想想你想要对一组电影进行哪些操作,然后编写代码。例如,您可能想知道您的收藏中有多少部电影,您可能想将一部电影添加到您的收藏中,您可能想在您的收藏中找到一部特定的电影。想想你想要什么并为此编写代码。

【讨论】:

【参考方案2】:

如果您事先不知道对象的数量(假设您使用main() 中的rng 生成Movie 的对象,或者您的教授将创建随机数量的对象)然后使用向量。

另一种选择是在构造函数中对它们进行计数,并通过函数将计数值作为Movies中所需的数组大小返回:

class Movie 

    public:
    Movie()  ++count; 
    Movie(const Movie&)  ++count; 
    Movie()  --count; 

    static size_t movieCount()
     return count; 

    static size_t count;
;
size_t Movie::count = 0;

class Movies : public Movie
 
  public:
  Movie array[movieCount()];

【讨论】:

以上是关于在C++ 如何在堆中创建一个类的对象? 谢谢!的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C++ 中创建一个作为另一个类的向量的类?

类是如何被加载的?

如何调用在另一个函数中创建的对象

在 C++ 中使用另一个类的对象计数在一个类中创建一个数组

C++中如何设计一个类只能在堆或者栈上创建对象

在层次结构中创建类的指针数组