首页  |  Linux  |  C/C++  |  网络编程  |  Python   |  Algorithm  |  数据库  |  经验  |   人生 & 随想   |  站内搜索  |  关于

<<< previous

该文已被浏览1126

struct:C和C++中的不同



C++中支持结构体,从而向后兼容了C,但这并不表明C和C++中结构体的用法是相同的。C和C++毕竟是两种不同的语言,因此它们之间的结构体的用法是有一些区别的,下面总结了这些区别.

1) 在C中声明一个结构体变量时,struct关键字是必需的;但是在C++中,声明一个结构体变量时,struct关键字可有可无。因此,下面的程序在C++编译器下可以编译通过,但是在C编译器下则会编译失败。

struct Point
{
    int x,y;
};
Point a;

2) 在C中,结构体中只能包含有数据成员;而在C++中,结构体除了可以包含数据成员外,还可以包含函数,如下:

struct Foo
{
    int a;
    void show()
    {
        cout<<"Hello World";
    }
}

3) C的结构体中不能有静态成员;而C++中则没有这一限制,可以在结构体中包含有静态成员。下面的程序在C++中是正确的,而在C中则是错误的:

struct Foo
{
    static int a;
};

4) C语言中,不能够在结构体中直接初始化成员变量;而在C++11中则可以在结构体中直接初始化成员变量(静态成员变量除外),如下:

struct Foo
{
    int a = 1;
};


一如既往,如果你对文章中的内容有任何疑问,或者是发现文章中有任何错误,都可以通过下面的地址发邮件告诉我.
E-mail: contact@TechForGeek.info