头文件中的static和const成员的初始化方法总结...

 
#include "stdafx.h"

#include <iostream>
#include <conio.h>

using namespace std;

///
class A
{
public:
	A()
	{

	}

private:
	int a = 0; // 非静态常成员
};

int main()
{
}

// 错误 只有静态的常成员才可以在头文件中初始化.
//error C2864: 'A::a' : only static const integral data members can be initialized within a class


///
class A
{
public:
	A()
	{
		cout<<"a = "<<a<<endl;
	}

private:
	static int a = 0; // 静态但非常成员
};

int main()
{
	A a;
	getch();
}

// 错误, 只有静态的常量才可以在头文件中初始化.
//error C2864: 'A::a' : only static const integral data members can be initialized within a class


///
class A
{
public:
	A()
	{
		a = 0;
	}

private:
	const int a;
};

int main()
{
}

// 错误 常成员只能在初始化列表中进行.
//error C2758: 'A::a' : must be initialized in constructor base/member initializer list


///
class A
{
public:
	A()
	{
		cout<<"a = "<<a<<endl;
	}

private:
	const int a; // 没有初始化,const 成员使用之前必须在初始化列表中初始化.
};

int main()
{
	A a;
	getch();
}

//error C2758: 'A::a' : must be initialized in constructor base/member initializer list


///
class A
{
public:
	A()
		: a(1) // 不可以在初始化列表中初始化
	{

	}

private:
	static int a;
};

int main()
{
}

// 错误 静态成员只能在类外进行初始化,这是为什么来着??????忘了...
//error C2438: 'a' : cannot initialize static class data via constructor


///
class A
{
public:
	A()
	{
		cout<<"a = "<<a<<endl;
	}

private:
	static int a; // 没有初始化
};

int main()
{
	A a;
	getch();
}

// 错误,静态成员不会自已初始化,使用之前要初始化.否则会产生连接错误
// error LNK2001: unresolved external symbol "private: static int A::a" (?a@A@@0HA)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值