命名空间可以包含 类、函数、变量
声明语句的作用: int i; ①指定存储空间的大小及存储数据类型; ②指定存储空间的位置标签为i;
类:类是用户定义的数据类型规范,它详细的描述了如何表示信息以及对数据执行操作。对象是根据类规范创建的实体,就像简单数据类型描述创建的实体一样。
初始化:初始化是将声明语句与赋值语句合并在一起;
C++中新增的赋值方法: ① int t(5); 将5的值赋给t。②int t{5};将5的值赋给t,括号内为空时,将0赋值给t。③int t={5};将5的值赋给t。
函数
函数原型: double sqort(double x) ; 该语句就是一个函数原型,类似于C语言中的函数声明,不同的是,函数原型所代表的函数的代码可以在其他文件下,不必与调用函数在同一文件,
在main函数下使用sqort()函数,有两种方式;①在源代码文件中输入函数原型;②包含函数原型所在的头文件
函数的基本特性:【1】
有函数头和函数体;
接收参数;
返回一个值;
需要一个原型;
函数 7 8章
数据类型:
1、整形:short int long long long char 同时还有与之对应的无符号类型; 如 unsigned short
无符号数只能表示正值,单其表示正值范围与对应的有符号类型相比要大;
为提高程序的可移植性,用存储范围稍大的类型[2];
复合类型
字符串的读入
cin.get(字符串名字,字符串大小);
cin.getline(字符串名字,字符串大小);//
两个函数都是读入一行字符串,以换行符为结束标志,不同的是cin.get(字符串名字,字符串大小);将换行符保留在输入队列中,下次使用读入函数时,第一个读入的就是换行符。【3】
引用
引用变量主要用途是作为函数的形参,将引用变量用作形参,函数将使用原始数据,而不是副本。
引用必须在声明时将其初始化。
const type & vairious; for example: int b=10; const int& a=b;
type& various;for example : int n=10; int& a=b
对于普通引用,可以通过改变a的值来改变变量b的值;对于常数引用,通过改变变量b的值,来改变常引用变量的值;
引用作为函数返回值时,避免使用函数结束时,不存在的变量作为返回【4】
常量指针: const int*p; 不能通过常量指针取修改所指向的内容; for example : int a=10; const int *p=&a; *p=15; 不能对*p赋值。
禁止将const 的地址赋值给非const指针,
函数重载:一个或多个函数名称相同,参数个数、或者参数类型不同的函数
函数重载:返回值类型相同,函数名字相同,形参类型,和个数不同的函数。for example:int mask(int a); int mask(float b);这两个函数为重载函数,根据调用时传递的实参类型决定调用哪一个函数;
普通成员变量与静态成员变量的区别:
class A
{
int i;//普通成员变量
static int j;//静态成员变量,被多个对象所共享,
}
内联函数:
用法:在函数前加上inline;
注意事项,内联函数中不能有递归调用。
静态成员变量 或 函数 本质上是全局变量或全局函数;
、
构造函数:与类同名,用于初始化对象的函数;
复制构造函数:classname(const classname& various);classname(classname& various);用一个对象去初始化另一个对象;
复制构造函数被调用的三种情况:
1、当用一个对象去初始化另一个对象时,复制构造函数被调用。classname a(a1); or classname a=a1;
2、如果某个函数的参数,是类A的对象,那么调用该函数时,类A的赋值构造函数被调用。(对象按值传递才调用赋值构造函数)
3、如果函数的返回值是类A的对象,那么当函数返回时,赋值构造函数被调用。
如果类中包含了使用new初始化的指针成员时,应当定义一个复制构造函数,以复制指针指向的数据而不是指针指向的地址;
当函数参数里面有类A的对象时,调用赋值构造函数去初始化该参数,这个过程相对费时间,如果想避免这个问题,可以通过引用的方式 A& ,如果不希望实参的值被改变,可以同常引用 const A&
类型转换构造函数:只有一个参数,而且不是复制构造函数,就可以认为是类型转化构造函数。
析构函数:析构函数与类名字相同,在前面加‘~’,没有参数和返回值,一个类只能有一个析构函数。
以数组作为参数的函数:
函数传递的并不是整个数组,而是数组的首地址,以及元素的类型,同时还需要传递数组的长度;//
for example: void quiksort(int a[], int size);or void quisort(int *p, int size);//告知数组的信息 地址 数组元素个数 类型
以二维数组作为参数的函数:
for example:int data[2][3]={{1,2,3},{1,2,3}}; void sum(int a[][3],int row ); or void sum(int (*a)[4],int row );raw为二维数组的行数
函数模板:
将同一个函数用于处理不同类型的数据时,使用模板。
for example: void swap(int &a,int & b); void swap(double &a,double & b); 可以使用模板,只用定义一个函数即可:
template <typename T>
void swap(T&a,T & b);函数在调用时,会自动根据实参类型,去定义T的类型。
【1】c++ primer plus 2..4.4
[2]c++ primer plus 3.1.5
[3]c++ primer plus 4,2,4
【4】c++ primer plus 8.2.4