C++成员变量初始化赋值

本文详细解析了C++中成员变量的初始化方法,包括普通变量、常量、引用及静态成员变量等不同类型的初始化方式,并通过具体示例代码演示了如何避免常见的陷阱。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘要: C++成员变量初始化赋值你都清楚吗?还有好多坑,好多细节也不知道

引用的初始化和const常量 一样只能在构造函数的初始化列表里初始。

    至于为什么成员变量中要用到引用,这个主要是该成员变量是另一个类的对象,但是该类却禁止copy【怎么禁止拷贝构造函数?其实很简单,声明为Private即可】。

    扯远了。。。

    下面是对于成员变量初始化的总结,在g++下测试过:

#include <iostream>

using namespace std;

class TestVar{
public:
	TestVar():b(2), e(a){
		a = 1;	
		cout<<a<<" "<<b<<" "<<c<<" "<<d<<" "<<e<<" "<<f<<" "<<h<<endl;
	}
private:
	//int a = 0;//error: ISO C++ forbids initialization of member ‘a’
	int a;//初始化可以在构造函数里面,也可以在初始化列表
	//const int b = 0;//error: ISO C++ forbids initialization of member ‘a’
	const int b;//常量的正确初始化应该使用[构造函数的初始化列表]
	int &e;//引用类型变量,和常量一样只能在[构造函数的初始化列表],参数是同类型变量
	
	//static int c = 0;//ISO C++ forbids in-class initialization of non-const static member ‘c’
	static int c;
	static const int d = 4;//注意只有整型数据才行[int.., char]
	static const char f = 'a';//可以,char也是整型数据
	static const double h = 9.9;//书上说不行,但是在g++下是可以的,根编译器有关吧
	
};

int TestVar::c = 3;//静态成员的正确初始化方法


int main(){
	TestVar t;
	return 0;
}

转载于:https://my.oschina.net/chaenomeles/blog/906266

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值