C++11类属性成员的初始化

在C++11中,大多数的基础数据类型都可以直接初始化,可以不通过构造函数来初始化。还有一些仍旧是类外初始化。由于可能存在对C++11支持的程度不同,以及编译器厂商是否对C++进行了扩展。下面是我的测试平台:

测试环境

  • Windows 10的64位操作系统

  • Microsoft Visual Studio Community 2019

测试代码

#include <iostream>

using namespace std;

class MyClass
{
public:
	static const int a = 3;		
	const double b = 3.14;
	//为了保持静态属性成员是属于整个类的,C++11的做法和以前一样,依旧在类外定义并初始化
	static int c;	//声明c	
	double d = 100.001;

	char str[33] = "Hello World!";
	int num[10] = { 0 };

private:

};
int MyClass::c = 10;//在这里定义并初始化

int main()
{
	MyClass C;
	cout << C.a << endl;
	cout << C.b << endl;
	cout << C.c << endl;
	cout << C.d << endl;
	cout << C.str << endl;
	cout << C.num[3] << endl;

	return 0;
}

测试结果

不仅能通过编译,而且输出结果也没有任何问题。这样的初始化方式写起来也非常顺畅,比旧标准好得多。

学习新的标准是非常有用的,这样最重要的是能让你避免对新的代码产生一些误判。尤其是当新的标准所支持的操作,在旧标准中并不支持的时候,你就很可能发生误判。

 

Microsoft Visual Studio Community 2019中,其实已经支持了C++14,C++17以及C++最新的草案标准

发布了222 篇原创文章 · 获赞 174 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/zy010101/article/details/105181567