C++学习笔记2

 1.默认参数

     默认参数只能从右向左默认中间不能跳跃默认,其中实参个数+默认参数>=形参个数

    重载和默认不能同时出现在函数中

    默认参数只能在声明出默认,不能在定义处默认。若声明和默认一起时则默认参数可以出现

2.new和delete

动态分配形式:

单变量:

类型名 *变量名=new  类型名;【int *p=new int ;】

多变量:【数组】       类型名  *变量名=new  类型名[数组长度];

初始化:int *p=new int(10);  则*p被初始化成10。

            有一个结构体变量:stu,有两个成员int i,string name,则stu * p= new stu{10,"name"};

             int * num=new int[5]{0}

释放动态分配的空间:delete  类型名;

            delete  []类型名;   :删除数组,不管是几维数组,都只有一个[]

 

3.强制类型转换

形式:static_case<类型名>(变量名)

static_cast  对于隐式类型转换的,即可用此类型。主要适用于双隐式类型的转换

reinterpret-cast  当隐式类型转换static_cast不能用时,则用此形式

const_cast  脱常转换,只能用于指针、引用。

 

4.命名空间

三种用法:

      1.使用空间函数的函数或变量时,在其空间内的函数或变量用前缀声明【std::cout】。

      2.使用using namespace 命名空间。全部声明,即命名空间里的内容都可以使用。

      3.使用using namespace   命名空间::函数名。【using namespace std::cout】,只声明单个。

        命名空间用于多人协作开发,避免命名冲突。

         在多人协作开发时,应包含头文件,然后再用using声明其命名空间【即解包】。

5.类

C中用结构进行封装,但其封装的不彻底,即可以通过外部进行修改。

而在C++中则用类进行封装,其将数据和行为分离,使其没有控制权限。

在C++中封装是指对内数据开放,对外提供接口。
类:用class声明({}后面要加分号)
class 类名
{
  public:
    共有部分,一般是声明其行为
    private(或protected):
        私有部分,一般是声明数据
};
若未声明其访问权限,则默认为私有。
类的声明放在头文件中。
将要给别人看的数据和行为的声明放在头文件(如:data.h)中,行为的具体事项放在类文件的(如:data.cpp)中
类中的私有部分不能在外部访问修改,只能通过行为访问修改。
即类成员只能通过类成员函数访问修改。
其操作步骤:先生成类、在用类声明出一个对象,用对象调用行为(成员函数)操作其数据(成员)
类名是一个变相的命名空间,即在声明类时在外加命名空间即namespace 名称{},用花括号将类包起来。
若将类放在命名空间中,则需要解包。即:在使用类的文件中加上using namespace 空间名称;
在类中存在一个bug,若将行为声明为引用【int &Data::getage()】,则可通过其返回的行为修改其数据。
使用类成员用.运算符。

posted @ 2016-03-25 19:44  Sayer  阅读(147)  评论(0编辑  收藏  举报