C++学习总结NO.1

来源:互联网 发布:笔记本打印机端口设置 编辑:程序博客网 时间:2024/05/17 23:31

C++相对于C的变化

1、数据类型:bool、成员指针/成员函数指针、引用、类

2、函数:内联函数、默认形参(从右边开始)、函数重载

3、强制类型转换

   const_cast : 用于临时去掉const限制 ,返回一个指向非常量的指针(或引用);

   static_cast : 数值之间,有一方是void*的指针之间的转换;

   reinterpret_cast : 任意两种指针类型之间,指针与数值类型之间

   dynamic_cast : 用于父子类之间

4、使用名字空间。标准库里的所有东西都属于std名字空间。用户编写的程序如果没有指定名字空间,使用匿名名字空间(::)。

5、

   构造函数/拷贝构造函数:在对象创建时调用

   析构函数:在对象销毁时调用

   private/protected/public :只要是在类的成员函数和友元中,就可以直接访问类的私有成员,无论类的对象是谁

   静态成员函数只能调用类的静态成员,静态成员变量不属于某个对象,只能在类的定义时初始化

   const修饰的成员函数不能改变当前的对象成员(如果某个成员变量被static修饰,则该变量不属于某个对象,可以被修改)

class A

{

    private:

          static int a;

          int b;

    public:

        A():b(0){a++;}

        int get(A& d)const{a++; b++;d.a++;d.b++;returna;}

        static void test(){get();}

};

int A::a = 0;

    在类A中a为静态成员,只能在定义时初始化,不能在构造函数中初始化;test函数为静态成员,不能调用非静态成员get();

    get()被const修饰,不能改变当前对象成员,所以b++不对,由于a不属于当前对象,可以被改变;

    在get()中,由于对象d也是A类型,所以可以直接调用私有成员。private/protected/public是根据类来设定访问权限的,而不是对象;

6、一个对象调用成员函数时,会隐含把对象的地址传进去,赋值给this指针。(用于区分同类的各个对象)

7、如果要创建常对象,必须重写构造函数

8、继承方式:private/protected/public。一个基本的原则:本类的数据由本类维护,子类在继承父类的私有成员数据时,也只能通过父类提供的接口函数使用

9、动态多态:虚函数、public继承、指针或引用(基类指针或引用指向子类对象)。

   在构造函数、析构函数和静态函数中调用虚函数时,不能实现多态。析构函数一般也要定义为虚函数。

   动态多态是靠虚表指针实现的。含有虚函数的类在构造对象时,都会多分配4个字节的空间来保存虚函数表。C++的标准规定,编译器必需要保证虚函数表的指针存在于对象实例中最前面的位置(这是为了保证正确取到虚函数的偏移量)

10、io对象可以转化成bool类型,对处于正常状态的io对象转化为true,处于错误状态的io对象转化为false。当io对象处于错误状态时,拒绝io操作,需要调用clear清除错误状态。

11、在使用STL时,注意迭代器失效的情况

//=====================================

当传递给函数参数的实参为临时对象或匿名对象,且函数参数为引用时,必须用const修饰

0 0
原创粉丝点击