C++中, struct和class的差别,struct默认成员函数及数据成员是公有的, 而class是私有的,还有其它么?
C++中, struct和class的差别,struct默认成员函数及数据成员是公有的, 而class是私有的,还有其它么?
本人以前认为,struct与class的区别就是如标题所说,
最近注意到, class的挎贝构造函数可以返回自身的引用:如
class CTClass
{
public:
.............
CTClass(const CTClass& other)
{
m_nValue = other.m_nValue;
return *this; //class 可以return返回自身的引用。如果是struct, 则通不过编译。
}
private:
int m_nValue;
};
但如果是struct, 则是通不过编译的(本人只有VC, 不知其它编译器通的过不?), 即,
用struct, 它的挎贝构造函数是不允许有(return)返回值的, 奇怪的是,虽然没有返回引用,但还是可以像class那象得到返回的引用。
详细一点说吧,举个例子:
//测试结构
typedef struct _tagTestStruct
{
_tagTestStruct()
{
m_dwOver = 0;
m_b = 0;
}
_tagTestStruct(int b, ULONG dwOver)
{
m_b = b;
m_dwOver = dwOver;
}
_tagTestStruct(const _tagTestStruct& other)
{
m_b = other.m_b;
m_dwOver = other.m_dwOver;
//注意这里不能 return *this; ????????????? 而class是充许的.
}
BOOL operator ==(const _tagTestStruct& other) const
{
if ((m_b == other.m_b) &&
(m_dwOver == other.m_dwOver))
{
return TRUE;
}
return FALSE;
}
_tagTestStruct& operator =(const _tagTestStruct& other)
{
m_b = other.m_b;
m_dwOver = other.m_dwOver;
return *this;
}
int m_b;
ULONG m_dwOver;
}TESTSTRUCT;
请问,class 与struct 在C++标准里,所有的差别???