C++最重要的特征是类,程序员可以使用类自定义数据类型,C++有时候将这些类型称为“类类型”,以区别于内置类型。

类型作用:

1、告诉我们数据代表的是什么意思

2、对数据可以执行哪些操作

算数类型:整数、单个字符、布尔值(整型)和浮点数(浮点型)。C++标准规定了每个算术类型的最小存储空间,但它并不阻止编译器使用更大的存储空间。(限制了最小的但没有限制最大的)

C++程序员通常把变量称为“变量”或者“对象”。

变量的类型作用:

1、决定了变量的内存大小和布局

2、能够存储与该内存中的值的取值范围以及在该变量上的操作集

左值和右值的区别:

左值就是变量的地址,或者一个代表“对象在内存中的位置”的表达式。

右值就是变量的值。

左值可以出现在赋值语句的左边或者右边,但右值只能出现在右边

1 int k =0;
2 int j = k;

k作为一个变量,可以出现在左边或者右边。变量是一个左值

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

声明用于向程序表明变量的类型和名字,一般使用关键字extern来声明。

初始化:复制初始化和直接初始化

1 int k(1024);  //复制初始化
2 int k = 1024; //直接初始化

对类类型来说,每个类会定义或者使用默认的构造函数来进行成员变量的初始化。

extern关键字是声名变量名而不是定义它,说明变量的定义在函数的其他地方,在程序中变量可以声明多次,但只能定义一次。

作用域:全局作用域、局部作用域和语句作用域。

 1 #include<iostream>
2 int g_sum; //全局作用域
3 int main()
4 {
5 int sum =0; //局部作用域
6 for(int val =1;val != 112;val++) //val 语句作用域
7 sum += val;
8 std::cout << "Sum=“ <<sum <<std::endl;
9 return 0;
10 }

常量const 在定义时,必须给予初始化,并在以后不允许被修改。

在全局作用域中声明的const变量是定义该对象的文件局部变量,次变量只存在于那个文件中,不能被其他文件访问。要使const变量能够被其他文件访问,必须使用extern显示的指出来。eg:

1 text.cpp
2 const k= 100; //这个只能在text.cpp中访问
3
4 text2.cpp
5 extern const k =100; //这个可以被任意文件访问

typedefy 用来定义类型的同义词

枚举 enum ,默认第一个枚举成员的赋值为0,后面的内个成员都比前面的大1.

enum Point{
point1,point2,point3,point4
};

Point pt = point1;
Point ptd =pt;

枚举类型的对象初始化或者赋值,只能通过其枚举成员或者同一枚举类型的其他对象来进行。

类:

类定义了组成该类型的数据(成员变量)和操作(成员函数)。定义了类就相当于定义了一个新的类型,该类型的名字就是类名。

当利用这个类名定义一个对象时,则每个对象所占据的存储空间只与该对象数据成员所占据的存储空间有关系,与成员函数无关。

变量定义用于为变量分配存储空间,还可以为变量指定初始化的值,在一个程序中,变量有且只有一个定义。

定义变量和定义数据成员有非常重要的区别:一般不能把类成员的初始化作为其定义的一部分。当定义数据成员时,只能指定该数据成员的名字和类型。类不是在类定义里定义数据成员时初始化数据成员而是通过构造函数来初始化(成员列表或者构造函数体内进行赋值初始化)。

使用class与stuct定义类的区别仅仅是影响默认初始访问的级别,class默认访问的是pricate,stuct默认访问的是public。

最新文章

  1. java从基础知识(十)java多线程(上)
  2. 网络粘贴---Xcode中可用到的快捷键
  3. jq 中each的用法
  4. OC 继承子类对象调用方法机制 子类对象访问父类中的实例变量
  5. svn出现权限不足时的解决方法
  6. erl0002-erlang ets学习笔记
  7. 仿酷狗音乐播放器开发日志二十五 duilib右键事件的不足的bug修复
  8. Less和Sass编译
  9. 【POJ】3630 Phone List
  10. 新发现:AirDroid(用Web端控制自己的手机发信息)
  11. 我永远的 dell 15r
  12. 郁闷的Delphi新闻
  13. CC Subarray LCM (数学)
  14. [原创]HBase学习笔记(4)- 数据导入
  15. leetcode算法题(JavaScript实现)
  16. Java线程的六种状态
  17. REHL5上安装salt-minion
  18. async await详解
  19. js用canvans 实现简单的粒子运动
  20. jsp多模块相同数据提交到后台之数据处理

热门文章

  1. the default discovery settings are unsuitable for production use at least one of...的解决办法
  2. Ubuntu安装系统监视器system-monitor并显示在状态栏(火狐浏览器)
  3. pgsql判断字符串是否为数字
  4. Datax-web的入门使用
  5. Java中静态方法和实例方法
  6. ubuntu测网速speedometer
  7. HIVE- lag函数和lead函数
  8. NextCloud 17.0.1 升级到NextCloud 23.0.0
  9. elementUI中table组件前端自己实现序号排序
  10. vue动态切换图片