飞快复习C++ 基于C的基础 0702

对象是类的实例,一个类包含多个方法
即时变量 - 每个对象都有其独特的即时变量。对象的状态是由这些即时变量的值创建的

$ g++ hello.cpp
$ ./a.out
Hello World*/
 
宽字符型 typedef short int wchar_t;  4字节,同int; 
long int 8 个字节,int 都是 4 个字节

typedef 为已有的类型取新名字 

一个变量只有几种可能的值,可以定义为枚举(enumeration)类型
enum 枚举名{ 
 标识符[=整型常数], 
 标识符[=整型常数], 
 ... 
 标识符[=整型常数]
} 枚举变量;

enum color { red, green, blue } c;
c = blue;
enum color { red, green=5, blue }; blue 的值为 6;red的值为0,默认为0 1 2 …

#define WIDTH  5 ;#define 名字  值
const int a=0; 和 define 关键字一样。const 类型的对象在程序执行期间不能被修改改变。
volatile 告诉编译器不需要优化volatile声明的变量,让程序可以直接从内存中读取变量

C++ 程序中可用的存储类:auto  register  static  extern   mutable  thread_local (C++11)
auto 自动指定变量的类型;

register 存储类用于定义存储在寄存器中而不是 RAM 中的局部变量 
变量的最大尺寸等于寄存器的大小(通常是一个词)不能对它应用一元的 '&' 运算符(因为它没有内存位置)。

static 存储类指示编译器在程序的生命周期内保持局部变量的存在。
因此,使用 static 修饰局部变量可以在函数调用之间保持局部变量的值。
static 修饰符也可以应用于全局变量。当 static 修饰全局变量时,会使变量的作用域限制在声明它的文件内。

extern 存储类用于提供一个全局变量的引用,全局变量对所有的程序文件都是可见的。
当您使用 'extern' 时,对于无法初始化的变量,会把变量名指向一个之前定义过的存储位置。

?= 运算符;Exp1 ? Exp2 : Exp3;

return_type function_name( parameter list )
{
   body of the function
}

如果函数要使用参数,则必须声明接受参数值的变量。这些变量称为函数的形式参数。

形式参数就像函数内的其他局部变量,在进入函数时被创建,退出函数时被销毁。

当调用函数时,有三种向函数传递参数的方式:

调用类型	描述
传值调用	该方法把参数的实际值赋值给函数的形式参数。在这种情况下,修改函数内的形式参数对实际参数没有影响。
指针调用	该方法把参数的地址赋值给形式参数。在函数内,该地址用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。
引用调用	该方法把参数的引用赋值给形式参数。在函数内,该引用用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。

参数的默认值:在函数定义形式参数时,比如 int max(a, b=10); 若调用时 max(a)则 b=10;max(2,3)则 b=3。

对匿名函数的支持,称为 Lambda 函数(也叫 Lambda 表达式)。
Lambda 表达式把函数看作对象。Lambda 表达式可以像对象一样使用,
比如可以将它们赋给变量和作为参数传递,还可以像函数一样对其求值。
Lambda 表达式本质上与函数声明非常类似。Lambda 表达式具体形式如下:
[capture](parameters)->return-type{body}

 <cmath> : sin cos tan log pow  hypot(a,b)平方和的平方根; sqrt  
 abs 绝对值;fabs 浮点数绝对值;floor 小于等于其的最大整数。
  
 数组名是数组第一个元素的地址。
 
 字符串实际上是使用 null 字符 \0 终止的一维字符数组。 
 char site[7] = {'R', 'U', 'N', 'O', 'O', 'B', '\0'};
 === char site[] = "RUNOOB";
 
 int *ip; 声明指针变量。
 ip = &var; 在指针中存储变量的地址。
 a = *ip; 取变量的值
 
 int  *ptr = NULL; ptr值为0;
 对指针进行四种算术运算:++、--、+、-
 
 C++ 允许您传递指针给函数,只需要简单地声明函数参数为指针类型即可。

 传递一个无符号的 long 型指针给函数,并在函数内改变这个值 
 unsigned long *p; 
 int * myFunction(); 从函数返回指针。
 
 引用很容易与指针混淆,它们之间有三个主要的不同:
不存在空引用。引用必须连接到一块合法的内存。
一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。
引用必须在创建时被初始化。指针可以在任何时间被初始化。

int i = 17;
为 i 声明引用变量,如下所示:
int&  r = i;
double& s = d;
在这些声明中,& 读作引用。因此,第一个声明可以读作 "r 是一个初始化为 i 的整型引用",第二个声明可以读作 "s 是一个初始化为 d 的 double 型引用"。 

把引用作为参数    	C++ 支持把引用作为参数传给函数,这比传一般的参数更安全。
把引用作为返回值	可以从 C++ 函数中返回引用,就像返回其他数据类型一样。

结构体定义 和 C 一样。
为了访问结构的成员,我们使用成员访问运算符(.)
 
可以把结构体作为函数的参数:
void printBook( struct Books book );

可以定义指向结构的指针,方式与定义指向其他类型变量的指针相似,如下所示:
struct Books *struct_pointer;
在上述定义的指针变量中存储结构变量的地址。
为了查找结构变量的地址,请把 & 运算符放在结构名称的前面,如下所示:
struct_pointer = &Book1;
为了使用指向该结构的指针访问结构的成员,您必须使用 -> 运算符,如下所示:
struct_pointer->title; 

typedef  struct books{}book;

typedef long int *pint32;
pint32 x, y, z;

类:
类的对象的公共数据成员可以使用直接成员访问运算符 . 来访问。
私有的成员和受保护的成员不能使用直接成员访问运算符 (.) 来直接访问。

成员函数:
函数返回值 类名::成员函数名(void);
double Box::get(void)

类成员可以被定义为 public、private 或 protected。默认情况下是定义为 private。

1.类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。

构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用于为某些成员变量设置初始值。

2.类的析构函数是类的一种特殊的成员函数,它会在每次删除所创建的对象时执行。

析构函数的名称与类的名称是完全相同的,只是在前面加了个波浪号(~)作为前缀,它不会返回任何值,也不能带有任何参数。析构函数有助于在跳出程序(比如关闭文件、释放内存等)前释放资源。

基类、派生类、继承

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值