c++中对象的类

Classes of objects c++

本文关键字:对象 c++      更新时间:2023-10-16

我是c++初学者,但知道面向对象编程。

我有一个类,它有一些不同类的对象。

class machine{
public:
    int func();
private:
    Plug p;
    std::vector<Rot> r;
    Ref ref;
};

这是正确的做法吗?我不太确定的原因是因为如果我在func中做cout << this->r.size()这样的事情,它不会输出任何东西(我有正确的包含和命名空间)。编译器编译了它,但程序显示为run failed。没有其他消息。我正在使用最新的Cygwin编译器g++编译器。

Edit:我只是想确保这是定义类的成员对象的正确方法。那么Plug p;是正确的吗?因为如果我从machine中调用Plug类中的方法,它就不会像我在main()中调用Plug方法时那样工作。此外,当我用r (vector)做一些事情时,程序退出失败…我需要调用它们的构造函数吗?如果有,我该怎么做?

谢谢你的帮助。

你需要阅读真正基础的c++主题,比如构造函数。当您实例化一个机器对象时,将调用构造函数。在您的例子中,是编译器创建的默认构造函数。这个不可见的默认构造函数也将调用p、r和ref的默认构造函数。

对于您的输出,请尝试计数<<r.size () & lt; & lt;endl;刷新缓冲区。请注意,您还必须在main()中调用x.f func(),其中x是machine的一个实例。

你的主是什么样子的?

还需要注意的是,c++比许多其他语言更需要你对基础知识有很好的理解——这意味着需要大量的阅读和尝试实例来测试你的理解。这种语言有很多陷阱和陷阱——我不建议猜测或过多地假设其他面向对象语言中的细节如何可能适用于c++。

要回答实际的问题:是的,这是定义数据成员的正确方法。每个数据成员的构造函数被自动调用,编译器为此生成必要的代码。

你发布的代码没有任何问题,当然它只是一个摘录,所以很难说出哪里出了问题。

r.size()实际上是足够的,你有this->r.size()。如果你得到一个"运行失败"的错误,它不能只是一个缺失的冲洗计数,但我想,如果你使用调试器,它应该很容易发现什么出错了。