C++结构体的成员变量初始化,以及结构体的构造和析构函数

C和C++中的结构体不同:以下测试均在vs2010,作者水平有限,有误请指出。

1.C++对struct关键字进行了增强:如下代码

struct info
{
	int a;
};

int main(int argc,char *argv[])
{
	info data;//在c中这样定义变量编译通不过,必须要加上struct,而在c++中这样是允许的
	return 0;
}

2.C++中可以使用构造函数对结构体成员进行初始化,而C中不可以

struct info
{
	int a;
	info(int x):a(x){}  //在c++中允许这样对成员变量初始化,而c中不允许
};

3.C++中可以定义析构函数,而C中不可以

​
struct info
{
	int a;
	info(int x):a(x){}  //在c++中允许这样对成员变量初始化,而c中不允许
	~info(){}
};

​

4.C++中类是由结构体衍变而来,因此对类的各种重载,友员操作对结构体同样适用。但是在类中如果不声明为public类型,默认是private。而在结构体中默认为public,这里就不做测试,有兴趣的可以自己测试。

你可能感兴趣的:(C/C++)