小编Dan*_*ani的帖子

C++破坏列表

我有一个类使用一些回调来进行计算.那些回调需要分配需要在回调范围之外生存的数据(动态数组),而不是在类破坏之后.我想过当一个类破坏时vector,auto_ptr它会自动被破坏:

class MyClass
{
    vector<auto_ptr<MyObject>> ThingsToDie;
};
Run Code Online (Sandbox Code Playgroud)

问题是我分配了很多对象,并且它们不共享基类型,所以我不能使用vector它,并为每种类型制作一个向量是很多工作.
如下所示的层次结构:

auto_ptr_base (virtual destructor)
      |
 auto_ptr<T>
Run Code Online (Sandbox Code Playgroud)

将解决我的问题,因为我可以做类似的事情

class MyClass
{
    vector<auto_ptr_base> ThingsToDie;
};
Run Code Online (Sandbox Code Playgroud)

并且将自动将销毁实际分派给每个专用类型.
问题是STL没有那个层次结构,我不想重新实现auto_ptr.
还有其他解决方案吗?

c++ shared-ptr

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

分配参考

请考虑以下声明:

Object *a;
Object *b;
Run Code Online (Sandbox Code Playgroud)

有两种分配a方式b,按价值或通过参考分配:

a = b; // by reference
*a = *b; // by value
Run Code Online (Sandbox Code Playgroud)

如果声明是:

Object &a;
Object &b;
Run Code Online (Sandbox Code Playgroud)

(我知道如果不初始化它们就不可能声明它们,它只是为了显示类型)

有两种方式分配的ab过,就像指针,通过引用或值.
这个代码中的哪一个:

a = b;
Run Code Online (Sandbox Code Playgroud)

会怎么做?有可能让它做相反的吗?(使用不同的语法?)

c++ reference

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

寻找大量的立方根

我需要找到向上四舍五入的巨大(5k位左右)数字的立方根.我怎么做?

root

0
推荐指数
1
解决办法
2352
查看次数

@property(保留)做什么?

@propert(保留)做什么?它实际上并没有通过我的测试保留我的对象:

id obj = getObjectSomehow();
NSLog(@"%d", [obj retainCount]);
propertyWithRetain = obj;
NSLog(@"%d", [obj retainCount]);

// output:
// 1
// 1
Run Code Online (Sandbox Code Playgroud)

如何创建一个真正保留对象的属性?

objective-c retain

0
推荐指数
1
解决办法
453
查看次数

C++:带有位字段的struct的sizeof

为什么gcc给出返回13作为下一课的sizeof?在我看来,我们应该得到e(4字节)+ d(4字节)+ 1字节(对于a和b)= 9字节.如果它是对齐的,那么大多数32位系统是不是在8字节边界上对齐的?

class A {
  unsigned char a:1;
  unsigned char b:4;
  unsigned int d;
  A* e;
} __attribute__((__packed__));


int main( int argc, char *argv[] )
{
  cout << sizeof(A) << endl;
}
Run Code Online (Sandbox Code Playgroud)

./a.out 13

c++ sizeof

0
推荐指数
2
解决办法
613
查看次数

标签 统计

c++ ×3

objective-c ×1

reference ×1

retain ×1

root ×1

shared-ptr ×1

sizeof ×1