标题:测试发现struct也可以有构造函数
只看楼主
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
结帖率:79.17%
 问题点数:0 回复次数:6 
测试发现struct也可以有构造函数
struct Msg_DisConnect
{
    TBYTE msg_type: 8;
    Msg_DisConnect()
    {
        msg_type = 0xE5;
        if(ERROR_FLAG)
        {
            int n = GetTickCount()%101;
            if(n<30)
                msg_type += n;
        }
    }
};
上面的程序中使用的构造函数竟然可以!!难怪大家都说class和struct是一样的
搜索更多相关主题的帖子: 构造 函数 struct 
2009-09-22 20:20
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
得分:0 
难怪大家都说class和struct是一样的

这句话是误导, 至少偶没这样说过

我就是真命天子,顺我者生,逆我者死!
2009-09-22 20:43
zhddragon
Rank: 5Rank: 5
等 级:职业侠客
帖 子:208
专家分:346
注 册:2009-5-14
得分:0 
回复 楼主 vfdff
struct和class在c++中唯一的差别就是struct默认的访问权限是public而class是private。
但struct在c++中出现只是为了兼容c,除此之外没有别的用途。

身体是玩命的本钱
2009-09-24 21:24
帅超
Rank: 2
等 级:论坛游民
帖 子:25
专家分:23
注 册:2009-9-12
得分:0 
以下是引用zhddragon在2009-9-24 21:24:29的发言:

struct和class在c++中唯一的差别就是struct默认的访问权限是public而class是private。
但struct在c++中出现只是为了兼容c,除此之外没有别的用途。
写的对。。
2009-09-24 21:40
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
得分:0 
恩 书上也读这么说的
够理论

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2009-09-26 18:37
zhddragon
Rank: 5Rank: 5
等 级:职业侠客
帖 子:208
专家分:346
注 册:2009-5-14
得分:0 
回复 5楼 vfdff
如果需要把c项目转移到到c++上那么这句活的意思就很明显了。
在c++里引入class这个关键字后struct的作用就完全可以被class取代了(在这里你找不到struct能做到的而用class无法实现的,速度因素排除在外),单从c++考虑struct在这时候就显得多余了,完全可以去掉。但是c++要兼容c,要求已有的c项目可以很容易(最好不用修改)用c++编译通过,所以作为c关键字的struct被保留了下来,而struct在c++的默认访问权限是public也是因为c没有访问权限这一说(相当于全部都是public)。

身体是玩命的本钱
2009-09-26 21:41
vfdff
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:2172
专家分:425
注 册:2005-7-15
得分:0 
恩,看来最初设计不好,总是会留下病根的

~~~~~~~~~~~~~~~好好学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2010-07-04 01:52



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-286479-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.559750 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved