c++学习笔记

C语言与c++的区别:1、c++后缀为.cpp C语言为.c

                  2、输入输出C语言为scanf、printf、c++为cout、cin

                  3、头文件C语言为stdio.h、c++为iostream

                  4、C语言不用using namespace std;//命名空间当c++中出现同名同参的方法时可以使用名命空                       间来使两个方法都实现。

                  5、C语言不可重载,c++可以重载

                  6、C语言不可定义空struct{}c++可以定义空的,c++的自定义类型为class也可以使用struct

                        C语言不可以使用class

                  7、C语言是面向过程的,注重方法函数,c++的是面向过程的注重对象。

c++的四大特性:抽象、封装、继承、多态。

结构体内可以使用访问限定符。不使用就默认为公有。类默认为私有,这也是结构体和类的区别。

struct student

{

    public:

        age;

    private:

        heavy;

}

::作用域解析符限定函数,限定了函数方法为哪个类如果不加则为全局函数。

返回值  类名::函数名(参数)

类不占用空间,只有实例化分配空间后才可对类进行操作。

this指针指向的是当前调用的对象,他是默认的。

const的作用封锁参数,修饰函数,修饰返回类型

int * const p  p不可修改为常量

int const *p    *p不可修改他所指向的不可修改

int const * const p    p和他所指向的都不可修改

#include<iostream>                     //#include<stdio.h>

using namespace std;//命名空间         // void Print()

class Hello                            //{

{                                      //    printf("hello word!");

 private://私有                        //}

protected://受保护                     //int main(int argc.char argv[])

public://公有                         //{

public:                                //        Print();

    void Print()                     //        return 0; 

    {                                  //}

        cout<<"hellow word!"<<endl;    //

    }                                  //

}                                      //

Int main()

{

        Hello myclass;        

            myclass.print();

         return 0;

}

实现的都是最简单的输出”hello word!“。

///////////(初步接触感觉c++好麻烦。但是封装起来比c好点。)

c++的语法和c相同。c++可以全面兼容c。

在使用字符串的时候应注意。

c++基础由STL模板库、空间配置器、容器、仿函数、算法、迭代器六个模块。

运算符的重载具有重要的意义。(operator)不可重载‘&&’'.'‘||’、‘,’‘*’ ‘::’ ‘? :’ ,‘sizeof’,typedef

operator :==

class person

{    

public:   int age ;

};

bool operator ==(person const& p1,person const &p2)

{

        if(p1.age==p2.age)

            return ture;

        else return false;

}

operator: ++()前增量    ++(Int)后增量

class   Test

{

private:

        int   value;

public:

        test(int x=3):value(x) {}

     Test &operator++();//前增量

     Test &operator++(int);//后增量

     void show()

    {

        cout<<"my value="<<value<<endl;

    }

};
 
//前增量 Test& 是指返回一个Test的地址

Test &Test::operator++()

    {

        ++value;

        return *this;

    }

//后增量

Test& Test::operator++(int)

{

    Test tmp(*this);//创建临时对像

    ++value;       //再增量

    return tmp; //返回临时对像
}
 
 






}


分配空间用的是new和delete。多少个new就有多少个delete,否则会造成内存泄露。

delete时注意不要释放空的无效的。(invalid pointer)

类里具有6个默认函数:默认构造、析构函数、赋值构造、拷贝构造、取地址、静态取地址

类外对象只能访问公有。

继承得到的派生类不能访问基类私有。

template :模板类时注意template<typename(class也可以) Type>后直接接的是类.

文件的操作:fopen,fclose。

this指针指的是当前调用的对象。

new的作用有:分配空间和定位、

深拷贝与浅拷贝。默认为浅拷贝。深拷贝分配空间浅拷贝不分配空间。使用另外的空间记录拷贝次数,

若需要的是深拷贝则另外开辟空间,浅拷贝的话就将数值加一,删除就减一。这里需要对等号的重载。

多态是将基类的虚函数表替换为派生类的函数地址,当基类派生类有同名函数时,派生类方法会覆盖基类方法

基类函数为虚函数时,派生类必须对该方法定义,

纯虚函数不可以创建对象。

智能指针:std::auto_ptr、booth::scoped_ptr、booth::shared_ptr、booth::scoped_array、

booth::intrusive_ptr、booth::weak_ptr、booth::shared_array

是将智能指针包含了 reset() 方法,如果不传递参数(或者传递 NULL),则智能指针会释放当前管理的内存。如果传递一个对象,则智能指针会释放当前对象,来管理新传入的对象。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章