c++ 基础

来源:互联网 发布:聚合数据是什么意思 编辑:程序博客网 时间:2024/05/29 04:24

命名空间可以包含 类、函数、变量


声明语句的作用: 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



原创粉丝点击