c++中对象的类
Classes of objects c++
我是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()
。如果你得到一个"运行失败"的错误,它不能只是一个缺失的冲洗计数,但我想,如果你使用调试器,它应该很容易发现什么出错了。
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- CMake-按正确顺序将项目与C运行时对象文件链接
- 空基优化子对象的地址
- 将对象数组的引用传递给函数
- 你能重载对象变量名本身返回的内容吗
- C++使用整数的压缩数组初始化对象
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 将对象移动到std::shared_ptr
- 代理对象的常量正确性
- 提升 ASIO 无法识别计时器对象
- 将Ref对象作为类成员
- 将包含C样式数组的对象初始化为成员变量(C++)
- 如何返回一个类的两个对象相加的结果
- 使用std::函数映射对象方法
- 是否需要删除包含对象的"pair"?
- 如何在自删除后将对象设置为nullptr
- 迭代时从向量和内存中删除对象
- 构造对象的歧义
- 使用"std::unordereded_map"映射到"std::list"对象