typedef std::vector <std::vector <int>> DataType;
class MyClass
{
public:
const DataType &getData() const;
DataType getData2() const;
private:
DataType data;
};
const DataType &MyClass::getData1() const
{
return data;
}
DataType MyClass::getData2() const
{
return data;
}
Run Code Online (Sandbox Code Playgroud)
我应该避免使用getData1()来复制它吗?更喜欢const引用而不是getData2()是否有任何性能优势?我应该如何从课堂上归还这样的"大"私人会员?
class MyClass
{
public:
...
private:
enum class BDTNodeType : unsigned char
{
NT_TERMINAL_ZERO,
NT_TERMINAL_ONE,
NT_TERMINAL_X,
NT_NOT_TERMINAL
};
class BDTNode
{
public:
explicit BDTNode(BDTNodeType node_type = BDTNodeType::NT_NOT_TERMINAL);
BDTNode(const BDTNode &node);
~BDTNode();
BDTNodeType type;
BDTNode *thenPtr; //1
BDTNode *elsePtr; //0
};
BDTNode *root_node;
//Constant nodes
static const BDTNode fv_nodes[3] = {
BDTNode(BDTNodeType::NT_TERMINAL_ZERO),
BDTNode(BDTNodeType::NT_TERMINAL_ONE),
BDTNode(BDTNodeType::NT_TERMINAL_X)
};
};
Run Code Online (Sandbox Code Playgroud)
我想直接在类声明中初始化静态const BDTNode fv_nodes数组,因为C++ 11允许这样做.但我得到"C2864:'MyClass :: fv_nodes':具有类内初始值设定项的静态数据成员必须具有非易失性const积分".我不能在课外初始化它,因为在那种情况下"BDTNode"类将无法访问.那我该怎么做呢?