c/c++中什么时候用struct而不用类?

来源:百度知道 编辑:UC知道 时间:2024/05/22 06:38:14
下面是从CORBA源代码中摘抄的一个struct的代码,在struct里面又有class,又有函数,为什么不用class而用struct?
struct TargetAddress
{
class OBUnique_object_key { };
typedef OB::FixSeq< ::CORBA::Octet, OBUnique_object_key > _object_key_seq;

private:

union
{
_object_key_seq* object_key;
::IOP::TaggedProfile* profile;
IORAddressingInfo* ior;
} _ob_v_;

bool _ob_i_;
AddressingDisposition _ob_d_;

void _OB_remove();
bool _OB_check(AddressingDisposition) const;

public:

typedef TargetAddress_var _var_type;

#ifdef OB_CLEAR_MEM
TargetAddress();
#else
TargetAddress() : _ob_i_(false) { }
#endif
TargetAddress(const TargetAddress&);
~TargetAddress() { _OB_remove(); }

TargetAddress& operator=(const TargetAddress&);

void _d(AddressingDisposition);
AddressingDis

runtoaim说得有一点道理,但是不完全对。

应该分语言来说:
在C中struct是用来封装数据的,其中不能够有函数成员。
而在C++中继承了在C语言中的用法,但是又做了改进,那就是在struct
中允许有成员函数,这时候的struct和类就没有什么本质的区别了,
你可以在struct中进行class的任何语法操作。比如构造函数,析构函数,重载运算符,等等。唯一的区别:
就是struct中的变量默认存取权限是public的,class中的是private
所以你既可以使用struct也可以用class,至于权限问题,你自己用
public,private,protected关键字指定就可以了!

struct 和 class的唯一区别就是struct中的变量默认存取权限是public的,class中的是private

这么比喻吧, 举个例子
class people,将"人"作为类的定义对象, 那么所有的人都是这个类的对象,如: people me, you;这个类里面有很多很多成员变量,如:性别,年龄,名字,国籍,爱好等等

而struct是一个结构, 可以来单个表述某类具有共同特性的事物,如: 爱好这个集合, 可以定义一个结构来集合爱好struct habbits, 这个结构包括如: 看书, 运动, 游戏之类的等等

class能实现所有struct能实现的。由于windows是用c开发的,c里使用了大量的struct,所以现在忍让保留了struct,使用时注意,struct默认成员是public的,而class默认是private的,建议使用类。。。。。。

个人喜好,代码的编写不可能千遍一律,需要具体问题具体分析。

这个问题你得搞清楚,strcurt用来封装一个集合,比如说用来表示一个学生的学号,性别,年纪之类的就可以用strcurt
而class用来封装程序的