C++中的类成员初始化问题----const、引用变量

Introduction

       在C++代码中,变量的声明和赋值是两个过程。声明是给变量分配内存,赋值是给内存赋值(即给变量赋值)。在声明的过程中同时给变量赋值叫做初始化,但是初始化的赋值和普通的赋值在C++编译器看来是不一样的。

       const类型的变量不能进行赋值,只能初始化。引用类型的变量也是一样。

Problem

1.error C2734:'b': const object must be initialied if not extern

2.error C2530:'c': references must be initialized

3.error C2758:'A::_b': must be initialized in constructor base/member initializer list

4.error C2166: I-value specifies const object

Solution

1.const类型的变量不能赋值,只能初始化

声明时赋值叫初始化,声明后赋值叫赋值(就是这么顺口呗= =)

2.引用类型的变量不能赋值,只能初始化

一般函数中的变量初始化可以用等号‘=’也可以用括号‘()’ —— const int b(5); int& c(a);

3.类成员变量在调用构造函数时必须初始化

也是const类型和引用类型。C++中给类成员初始化的唯一方式就是成员初始化列表,也就是构造函数后面跟冒号的形式

4.不能对const变量进行赋值

Summary

变量的使用过程:1、分配内初[初始化数据]

                             2、赋值

步骤1是声明,中括号中的内容对于一些类型的变量可有可无,但是对于const类型和引用类型的变量必须有,因为它们不能进行第二步。

本质上,初始化就是在给变量分配内存的时候“赋值”。

猜你喜欢

转载自blog.csdn.net/liyingjiehh/article/details/82961455