小编And*_*tan的帖子

没有指针的C++多态

假设我有一个基类Animal与虚函数和一些派生类(Cat,Dog等).实际派生类包含4-8个字节的数据.我想存储一个std::list<Animal>实际上包含派生对象的项目.我想避免使用new在堆上创建许多小对象.

有没有可用于实现此目的的设计模式?

编辑:我的想法来实现这一点

  1. 创建std::deque<Cat>,std::deque<Dog>...; std::list<Animal*>包含指针的商店deques; 我使用的是std::deque因为我认为它具有良好的内存管理和大量的对象;

c++

31
推荐指数
2
解决办法
2万
查看次数

当赋值运算符重载时,const类成员是否有用?

我有一个类,其成员不会被类的方法改变,所以我将其标记为const.我的问题是我使用默认赋值运算符就像复制构造函数一样,以避免多个声明.但在这种情况下,赋值运算符不会自动生成,因此我得到了一些编译器错误: 'operator =' function is unavailable.这似乎没有真正的生活场景,其中可以实际使用const类成员(例如,你在STL代码中看到过任何const成员吗?).

有没有办法解决这个问题,除了删除const

编辑:一些代码

class A
{
public :
   const int size;
   A(const char* str) : size(strlen(str)) {}
   A() : size(0) {}
};


A create(const char* param)
{
    return A(param);
}


void myMethod()
{
    A a;

    a = create("abcdef");
    // do something

    a = create("xyz");
    // do something
}
Run Code Online (Sandbox Code Playgroud)

c++

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

.NET String对象和无效的Unicode代码点

.NET String对象是否可能包含无效的Unicode代码点?

如果是,可能会发生这种情况(如何确定字符串是否具有此类无效字符)?

.net string unicode

4
推荐指数
2
解决办法
1475
查看次数

使用std :: tr1 :: shared_ptr作为引用计数的内部机制

为了引用计数,使用std :: tr1 :: shared_ptr和下面的示例代码一样安全正确吗?(这只是一个特定的示例,该类可以包含任何其他内容(void*)而不是FILE*)

class File
{
public:
    File(const char* path, const char* mode) :
        _refcount(new int(0))
    {
        this->_file = fopen(path, mode);
    }

    ~File()
    {
        if (this->_refcount.unique())
        {
            if (this->_file != NULL)
            {
                fclose(this->_file);
            }
        }
    }

    int write(void* buff, size_t size)
    {
        fwrite(buff, size, 1, this->_file);
    }

private:
    FILE* _file;
    std::tr1::shared_ptr<int> _refcount;
};
Run Code Online (Sandbox Code Playgroud)

c++ smart-pointers tr1 reference-counting shared-ptr

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

Haskell Infinity 检查 Double 数据类型

如何检查一个Double值是否Infinity在 Haskell 中?

floating-point haskell

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

带有编译器的 C++ 类为对象强制实施唯一的所有权语义

有没有办法编写一个 C++ 类,以便编译器对对象强制执行唯一的所有权语义?

c++

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