c++学习笔记第二章

第二章:变量和基本类型

1.四个基本类型
整型:short、int、long、bool、char、wchar_t
浮点型:float、double、long double
2.块(chunk)概念
让存储具有结构的最基本方法是用块处理存储。块的位数一般是2的幂。
3.unsigned char,取值范围是0-255
当给unsigned char赋值336时,实际赋值为80.因为80是336对256求模后的值。
4.在一行的末尾加一反斜线符号(/)可将次行和下一行当作同一行处理.
注意反斜线必须是该行的尾字符,不允许后面有注释和空格。同样,后继行行首的任何空格和制表符都是字符串字面值的一部分。正因如此,长字符串字面值的后继行才不会有正常的缩进。
下面的反斜线为必须有的:
"saldkjfs     /
aldfjsadjkf"
5.012:八进制;0x12:十六进制;
6.变量名定义:以字母或下划线开头后面只能跟字母数字或下划线。
不能有两个连续的下划线,也不能以下划线开头后面紧跟一个大写字母。在函数外面定义的标识符不能以下划线开头。
7.左值和右值
左值:可以出现在赋值语句的左边或右边;
右值:只能出现在赋值的右边;
8.初始化
c++支持两种初始化变量的形式:复制初始化(=)和直接初始化(括号)。
int ival(1024);
int ival = 1024;
直接初始化不是赋值,相对而言更灵活,效率更高。(类类型中会有交代)
9.对于内置类型来说,复制初始化和直接初始化几乎没有差别。
对于类类型的对象来说,有些初始化仅能用直接初始化完成。
定义如何进行初始化的成员函数称为构造函数。
std::string a = "asd";
std::string a("asd");
10.内置类型变量的自动初始化
内置类型变量是否自动初始化取决于变量定义的位置。在函数体外定义的变量都初始化成0,在函数体内定义的内酯类型变量不进行自动初始化。
11.声明和定义
声明:用于向程序表明变量的类型和名字。可以通过extern关键字声明变量名而不定义它。声明不分配存储空间。只有当声明也是定义时,声明才可以有初始化,因为只有定义才分配存储空间。初始化时必须要有存储空间来进行初始化。如果声明有初始化时,那么它可被当作是定义,即使声明标记为extern。
c++语言中,变量必须且仅能定义一次,而且在使用变量之前必须定义或声明变量。
12.全局,局部,语句作用域。
局部>全局
语句作用域:i的作用域为for语句。
for(var i = 0; i < 10; i++)
{
}
13.在全局作用域声明的const变量是定义该对象的文件的局部变量。此变量只存在于那个文件中,不能被其它文件访问。通过指定const变量为extern,就可以在整个程序中访问const对象。
非const变量默认为extern。要是const变量能够在其他文件中访问,必须显式地指定为extern。
const变量必须初始化。
14.引用:是一种复合类型;通过在变量名前添加"&"符号来定义。
只是对象的另一个名字,在实际程序中,引用主要用作函数的形式参数。
每一种应用类型都关联到某一其他类型。不能定义引用类型的引用,但可以定义任何其他类型的引用。
引用定义时必须用与该引用同类型的对象初始化,一旦初始化就绑定到初始化时指向的对象。不可将引用绑定到另一个对象。
15.const引用
const引用是指向const对象的引用;类似地,非const引用表示指向非const类型的引用。
const int ival = 1024;
const int &refVal = ival;  //ok
int &ref2 = ival;          //error
const可以被初始化为右值;
例如:
int i = 42;
const int &r = 42;
const int &r2 = r+i;
16.不同类型的引用
double dval = 3.14;
const int &ri = dval;
编译器会把上面代码转换成如下形式的编码
int temp = dval;
const int &ri = temp;
如果ri不是const,那么给ri赋一新值,这样做不会修改dval.而是修改了temp。
非const引用只能绑定到与该引用同类型的对象。
const引用则可以绑定到不同但相关的类型的对象或绑定到右值。
17.typedef:可以用来定义类型的同义词
typedef没有引入新的类型,只是现有数据类型的同义词
使用typedef目的:
一、隐藏特定类型的实现,强调使用类型的目的;
二、简化复杂的类型定义,使其更易理解;
三、允许一种类型用于多个目的,同时使得每次使用该类型的目的明确;
18.枚举
枚举成员值可以是不唯一的。
enum points
{
point2d = 2,
point2w,            //值为3
point3d = 3;
point3w             //值为4
};
每个枚举都定义了一种新的类型。和其他类型一样,可以定义和初始化points类型的对象。枚举类型对象的初始化或复制只能通过其枚举成员或同意枚举类型的其他对象来进行。
points pt3d = point3d;  //ok
points pt2w = 3;        //error
pt2w = polygon;         //error
pt2w = pt3d;            //ok
19.类类型
每个类都定义了一个接口(interface)和一个实现(implementation)。接口由使用该类的代码需要执行的操作组成。实现一般包括该类所需要的数据。实现还包括定义该类需要的但又不供一般性实用的函数。
class Sales_item{
public:
//
private:
std::string isbn;  //类成员的初始化一般放构造函数中
unsigned units_sold;
double revenue;
};   //注意此处的分号

struct Sales_item{
//
private:
std::string isbn;  //类成员的初始化一般放构造函数中
unsigned units_sold;
double revenue;
};
class成员默认为private,struct成员默认为public
20.头文件
头文件中不应该包含变量和函数的定义。但是有三个例外:类、值在编译时就已知道的const对象和inline函数。
在实践中,大部分的编译器在编译时都会用相应的常量表达式来替换对这些const变量的使用。所以,在实践中不会有任何存储空间用于存储用常量表达式初始化的const变量。如果const变量不是用常量表达式初始化,那么它就不应该在头文件中定义。相反,和其他的变量一样,该const变量应该在一个源文件中定义并初始化。应在头文件中为她添加extern声明,以使其能被多个文件共享。
21.避免头文件被多重包含
#ifndef SALESITEM_H
#define SALESITEM_H
//definition of Sales_item class and related functions goes here
#endif

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值