在看caffe源码的时候发现如下的代码:
#define DISABLE_COPY_AND_ASSIGN(classname) \
private:\
classname(const classname&);\
classname& operator=(const classname&)
1.首先要明白这里反斜杠可以理解为续行符(链接下一行的,写在一行可读性比较差)
如果代码中有使用这样的语句class Test
class Test
{
CLASS_UNCOPYABLE(Test);
};
则代码会被替换为:
class Test
{
private:
Test (const Test&);
Test& operator=(const Test&);
};
这样就起到了阻止编译器自动生成copy函数和重载等号操作符函数。