相关疑难解决方法(0)

为什么不在C++中使用指针?

假设我定义了一些类:

class Pixel {
    public:
      Pixel(){ x=0; y=0;};
      int x;
      int y;
}
Run Code Online (Sandbox Code Playgroud)

然后使用它编写一些代码.我为什么要这样做?

Pixel p;
p.x = 2;
p.y = 5;
Run Code Online (Sandbox Code Playgroud)

来自Java世界我总是写:

Pixel* p = new Pixel();
p->x = 2;
p->y = 5;
Run Code Online (Sandbox Code Playgroud)

他们基本上做同样的事情,对吗?一个在堆栈上而另一个在堆上,所以我将在以后删除它.两者之间有什么根本区别吗?为什么我更喜欢一个呢?

c++ heap stack pointers

75
推荐指数
11
解决办法
1万
查看次数

将指针用作类成员是一种好习惯吗?

我是C++的新手,我正在努力理解构建类的良好实践.

假设我有一节课Foo:

class Foo {
  public:
    double foo;
    Foo(double foo);
    Foo add(Foo f);
}
Run Code Online (Sandbox Code Playgroud)

我想创建一个Bar由两个Foo对象组成的类,并在构造时创建第三个对象.

第一个选项:作为类成员的对象

class Bar {
  public:
    Foo foo1;
    Foo foo2;
    Foo foo3;
    Bar(const Foo &f1, const Foo &f2);  
}

Bar::Bar(const Foo &f1, const Foo &f2):
{
  foo1 = f1;
  foo2 = f2;
  foo3 = f1.add(f2);
}
Run Code Online (Sandbox Code Playgroud)

因为我没有为其定义默认构造函数,所以它不起作用Foo.

第二种选择:指针作为班级成员

class Bar {
  public:
    const Foo* foo1;
    const Foo* foo2;
    const Foo* foo3;
    Bar(const Foo &f1, const Foo &f2);  
} …
Run Code Online (Sandbox Code Playgroud)

c++ oop pointers

3
推荐指数
1
解决办法
235
查看次数

标签 统计

c++ ×2

pointers ×2

heap ×1

oop ×1

stack ×1