从C++结构到C++类

从C++结构到C++类,c++,class,struct,C++,Class,Struct,我被赋予这个结构来转换成一个缓冲类。这是我第一次遇到这个问题,有什么可以做的和不可以做的吗?如有任何建议,将不胜感激。 我知道我必须使用正确的封装以及一些移动构造函数。有什么建议吗?谢谢。结构和类在C++中是相同的,除了成员在结构中默认为公共结构,在类中默认为私有。所以您只需要决定哪些数据和函数需要公开,并将它们放在public:部分中。经典的实现是没有数据是公共的struct和class实际上是完全相同的东西,唯一的区别是如果不另外指定,那么struct的所有成员都是公共的,而class是私有

我被赋予这个结构来转换成一个缓冲类。这是我第一次遇到这个问题,有什么可以做的和不可以做的吗?如有任何建议,将不胜感激。
我知道我必须使用正确的封装以及一些移动构造函数。有什么建议吗?谢谢。

结构和类在C++中是相同的,除了成员在结构中默认为公共结构,在类中默认为私有。所以您只需要决定哪些数据和函数需要公开,并将它们放在public:部分中。经典的实现是没有数据是公共的

struct和class实际上是完全相同的东西,唯一的区别是如果不另外指定,那么struct的所有成员都是公共的,而class是私有的。如果在第一个属性之前添加public:,则不会注意到任何差异。尽管我建议大家仔细阅读并慎重决定什么是公共评论,什么是私有评论,但还是不要使用int*p成员,而是使用std::vector。
struct Buffer{
    int* p;
    unsigned n;
    mutable std::string toString; 
    mutable bool toStringDirty;
    Buffer (void); // implement it with correct initialization 
    Buffer (unsigned m, int val = 0); // inits with m ints with val
    Buffer (const Buffer& a) {
    Buffer::Buffer();
    if (a.n) {
         unsigned m = (n = a.n) * sizeof(int);
         memcpy(p = (int*) malloc(m), a.p, m);
    }
    toString = a.toString;
    toStringDirty = a.toStringDirty;
    Buffer (const Buffer&&);
    int& operator[](unsigned i);
    const Buffer& operator=(const Buffer&&);
    const Buffer& operator=(const Buffer&);
    const Buffer& operator=(int val); //sets all with val
    const Buffer operator+(const Buffer& a) const; // concatenates
    // appends ‘a.first’ ints with an ‘a.second’ value
    const Buffer operator+(const std::pair<unsigned,int>& a) const;
    const Buffer operator-(unsigned m) const; // drops m ints at end
    // converts to string with caching support, format as [%d] per integer
    const std::string ToString (void) const;

};