文档章节

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

follitude
 follitude
发布于 2017/05/21 20:37
字数 380
阅读 11
收藏 0

摘要: 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/chengshuguang/blog/210666

共有 人打赏支持
follitude
粉丝 6
博文 118
码字总数 4956
作品 0
浦东
私信 提问
Effective C++笔记简易总结以及程序演示

4、确定对象被使用前已被初始化 在使用变量时不进行初始化是不好的行为,在程序中有可能读入一个未初始化的值就可能导致程序崩溃。 对于内置类型,保证在使用对象之前进行初始化: 对于结构体...

oldpan
2017/10/11
0
0
我所知道的一个简单类

我所知道的一个简单类   大家都说C++难学,我也正在学习,之所以难是可能因为没有了解C++中的一些很基础的东西,有点似懂非懂的感觉,而没有真正了解C++的运行机制,我一直在学习基础,这篇...

长征2号
2017/12/18
0
0
C++ 对象构造, 拷贝, 赋值和隐式类型转换总结

原文:C++ 对象构造, 拷贝, 赋值和隐式类型转换总结 作者:Breaker C++ 中对象创建(构造)、拷贝、赋值、隐式类型转换的阶段性总结 关心效率和拷贝开销,写在代码注释中 关键字:对象创建、...

晨曦之光
2012/05/23
1K
0
C++ Primer Plus(四)——复合类型

只能在定义数组时才能初始化,不能将一个数组赋值给另一个数组,但可以使用下标分别赋值给数组元素,但可以将一个string对象赋值给另一个string对象 如果只对数组的一部分初始化,其他元素自...

吃一堑消化不良
2015/11/06
0
0
const static在c c++中的作用

一.C语言中的const const是C语言中保留的一个关键字,它用来限定一个变量是只读的,即不可变的。程序中使用const可以在一定程度上提高程序的健壮性,但是程序中使用过多的const,可能在对代码...

y_x
2011/11/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Git代码防丢指南

我们在日常使用Git的过程中经常会发生一些意外情况,如果处理不当,则可能会出现代码丢失的假象。本文将针对IDEA&Git日常开发中的一些场景,为你层层拨开迷雾,解析常见的错误及其发生原因,...

joymufeng
5分钟前
0
0
传统IDC部署网站(三)

16. chown命令 chown 用来更改一个文件或者目录的所有者护着所属组 -R 级联更改一个目录下所有的目录和文件 chown user1:users 1.txtchown user1.users 1.tx useradd 添加用户的命令 user...

miko0089
15分钟前
0
0
来玩一下Java设计模式之命令模式

wiki上的描述 Encapsulate a request as an object, thereby allowing for the parameterization of clients with different requests, and the queuing or logging of requests. It also al......

小刀爱编程
16分钟前
0
0
Optional类的简单了解

import java.util.Optional;/** * @author hanliwei */public class OptionalTest { /** * Optional 类是一个可以为null的容器对象。如果值存在则isPresent()方法会返...

wind2012
24分钟前
0
0
如何写出好的单元测试?

大家都知道,开发软件的时候为代码编写单元测试是很好的。但实际上,光有测试还不够,还要编写好的测试,这同样重要。 要做到这一点,考虑遵循一些固执的原则,对测试代码给予一些关爱: 1....

程序猿拿Q
33分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部