定义对象

来看看下面的语句定义了几个变量:

int units_sold;
double sales_price,avg_price;
string title;
Sales_item curr_book;

定义了五个变量.每个定义都是以类型说明符(type specifier)开始,后面紧跟着以逗号分开的含有一个或多个说明符的列表.分号结束定义.类型说明符制定与对象相关联的类型:int、double、string和Sales_item都是类型名. 其中int跟double都是内置类型,string是标准库定义的类型,而Sales_item是类类型.

类型决定了分配给变量的存储空间的大小和在其上执行的操作.

保存下先,安装的WLW试试能不能用 :)

进度甚慢啊.每天才看几页,要多看看了 - -

多个变量可以定义在同一条语句中:

double salary,wage;   //定义了两个变量
int month,day,year;     //定义了三个变量
string address;           

下面来看看变量的初始化.

变量的定义制定了它的类型和标识符,也可以为对象提供初始值.定义时制定了初始值的对象被称为是"已初始化的"(initialized)    C++支持两种初始化变量的形式:   复制初始化(copy-initialization) 和 直接初始化 (direct-initialization)    复制初始化语法用 等号 =,直接初始化则是把初始化式放在括号中:

int  ival(1024);       //direct-initialization

int  ival=1024;       //copy-initialization

注意:C++里面,你要理解这句话"初始化不是赋值",初始化指的是创建变量并给它赋初始值,而赋值则是擦除对象的当前值并用新值代替. 例如,你使用word工具,新建一个文档后,写下第一句话,这就是初始化,而你发现这句话好像写的不好,你选中它然后直接敲入新的语句,这就好比赋值.也好比是你刻录DVD-R一张,跟你使用一张已经有内容的DVD+RW再去刻录一样. - -

使用=来初始化变量会让新手感到迷惑,因为看上去这跟赋值没什么区别.但是在C++中你必须理解,初始化跟赋值是不一样的两种操作.C++在编写非常复杂的类的时候才会体现这两者的区别,其他时候这都是细枝末节的问题,但这是一个关键的概念,需要你反复去理解.

注意.直接初始化语法更加灵活且效率更高.就是使用括号的那种

初始化内置类型的对象只有一种方法:提供一个值,并且把这个值复制到新定义的对象中.

对内置类型而言,复制初始化和直接初始化几乎没有差别.

这条语句我不能理解:

std:string all_nines(10,'9');    //all_nines="9999999999"

初始化all_nines的唯一方法是直接初始化,有多个初始化式时不能使用复制初始化.

以上如何理解?跪求达人解释  = =

 

再来看看初始化多个变量

当一个定义中定义了两个以上变量的时候,每个变量都可能有自己的初始化式.对象的名字立即变成可见.所以可以用同一个定义中前面已定义变量的值初始化后面的变量.已初始化变量和未初始化变量可以在同一个定义中定义.两种形式的初始化文法可以互相混合.

#include<string>
double salary=9999.99,wage(salary+0.01);//在初始化wage之前定义并初始化salary
int interval,month=8,day=7,year=1955;//混合定义了已初始化变量和未初始化变量
std:string title("C++ Primer,4th Ed."),publisher="A-W";//两种初始化方式的语法并存

对象可以用任意复杂的表达式(包括函数的返回值)来初始化:

double price=109.99,discount=0.16;
double sale_price=apply_discount(price,discount);

这里的函数apply_discount接受两个double类型的值并返回一个double类型的值.将变量price和discount传递给函数,并且用它的返回值来初始化sale_price.

习题:

int month=9,day=7;跟int month=09,day=07;是否一样

当然不一样啦,大哥,前面加个0是表示八进制,你忽悠谁呢 = =

再来:

int car=1024,auto=2048;
int ival=ival;
std::cin>>int input_value;
double salary=wage=9999.99;
double calc=calc();

以上有什么错

第一句里面,auto是关键字,不能作变量名,第三句里面,>>这种运算符后面不能进行变量定义,改成 int input_value;cin:>>int input_value;第四句中,不同的变量应该分别初始化,double salary =9999.99,wage=9999.99;

另外,虽然 int ival=ival没什么错,但是这是无意义的,因为ival还是未初始化.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值