C++ 分清定义,声明,初始化


本文试从概念到实例,把c++里的定义、声明和初始化这几个东西讲清楚

概念

本节内容全部来源[1]。

定义

变量的定义用于为变量分配存储空间,还可以为变量指定初始值。

int units_sold;
double sales_price, avg_price;
std::string title;
Sales_item curr_book; // class Sales_item

初始化

C++ 支持两种初始化变量的形式:复制初始化和直接初始化。复制初始化语法用等号(=),直接初始化则是把初始化式放在括号中。

int ival(1024); // direct-initialization
int ival = 1024; // copy-initialization

初始化不是赋值。初始化指创建变量并给它赋初始值,而赋值则是擦除对象的当前值并用新值代替。

当定义没有初始化式的变量时,系统有时候会帮我们初始化变量。

1.内置类型变量
(Built-in Types,即int,float,double,void,char,bool等。注意string是标准库定义的类型,不是内置类型)
在函数体外定义的变量都初始化成 0,在函数体里定义的内置类型变量不进行自动初始化。

2.类
类通过定义一个或多个构造函数来控制类对象的初始化。创建类类型的新对象,都要执行构造函数,保证每个对象的数据成员具有合适的初始值。
构造函数可以包含一个构造函数初始化列表,以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个数据成员后面跟一个放在圆括号中的初始化式。与任意的成员函数一样,构造函数可以定义在类的内部或外部。
构造函数初始化只在构造函数的定义中而不是声明中指定。

//将 isbn 成员初始化为 book 形参的值,将 units_sold 和 revenue 初始化为 0。
Sales_item::Sales_item(const string &book):
          isbn(book), units_sold(0), revenue(0.0) {
   
    }

如果没有提供初始化式,那么就会使用默认构造函数。如果类具有默认构造函数,那么就可以在定义该类的变量时不用显式地初始化变量。例如,string 类定义了默认构造函数来初始化 string 变量为空字符串。

string a;
cout << "a: " << a <<endl;

输出:

a: 

此外,省略初始化列表在构造函数的函数体内对数据成员赋值是合法的。

Sal
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值