3.C++语言知识点总结

1.封装:将记录包起来让其自己去干。

2.抽象:记录一下这些家伙的属性,比如都是人。

3.继承:生下来的儿子跟父亲一个鸟样。

4.多态:儿子除了含有父亲的内容外,还有自己的特征。

5.头文件中不加“.h”。

6.加上命名空间 using namespace std; //后期考虑到C++主要用在大型程序设计,可以不加,但是一些调用的类型要用std::xxoo的形式。

7.cin>>i;输入(面板输入到i)   cout<

   cin.peek()的返回值是一个char型的字符,其返回值是指针指向的当前字符,但它只是观测指针停留在当前位置并不后移;

   cin.get()用来从指定的输入流中提取一个字符(包括空白字符);

   #include
     using namespace std;
     int main(){
         int sum=0;
         int c;
         while(cin>>c){
             sum+=c;
             while(cin.peek()==' '){    //屏蔽空格 //探测并不移除
             cin.get();//获得并移除
          }
        if(cin.peek()=='\n'){
             break;
          }
      }
    cout<        return 0;
    }
   运行结果:
   11 11 22     11
   55

8.ungetc(ch,stdin);//将变量ch中存放的字符退回给stdin输入流(其中ch=getchar();面板输入的字符被ch赋予,为了使其重新回到面板中可以使用该句)

9.构造函数:对象可以使用的函数。比如:in.open()

10.可以加std::cin.ignore(100,‘\n’);std::cin.get();//暂停结束,直到任意输入一字符再结束(这里的ignore()表示忽略100个字符,除非是\n就不忽略)

11.函数重载:将函数的作用重新定义

12.局部变量需要初始化为0

13.在string str;时,由于cin>>str会由于遇到空格便结束,所以要改为getline(cin,str);//表示用cin的方式输入一串东西给str

14."&"表示获得变量的地址

15.用‘ ’括起来的表示为单个字符

16.int *p1=&myInt,这里表示的指针是存地址

          *p1=233;这里表示的是解引用,给地址在p1中的内存位置赋值233

17.如果函数形式为swap(int *p,int*q),传入的参数应该为地址swap(&p,&q)

     形式为swap(int &p,int &q)时,直接传入参数就行,即为swap(p,q)

18.用typedef来为一个类型定义创建一个别名:typedef int* intPointer,意思就是说,intPointer=int*

19.类 class Myfirstclass

          {

             };//要求类名的第一个字母采用大写,同时在类声明末尾必须有一个分号,类主要由里面的变量还有函数组成

20.queue(模板类)队列:需要元素类型

     eg:queue q1;//表示q1是一个队列

     queue的基本操作:

     入队:q.push(x);将x接到队列的末端

     出队:q.pop();弹出队列的第一个元素,并不会返回其值

     访问队首元素:q.front();即最早被压入队列的元素

     访问队尾元素:q.back();即最后被压入队列的元素

     判断队列空:q.empty();当队列空时,返回true

     访问队列中元素的个数:q.size();

21.构造器

     class Car

      {

       Car(void);//构造函数名字与类名一样

        };

      Car::Car(void){

         }//定义构造函数内容

22.析构器

     class Car

      {

      Car(void);

       ~Car();//析构函数,避免内存泄漏,可在析构函数中加内容    Car::~Car()

                                                                                                         {

                                                                                                             }

23.继承:

     class Animal

      {

        public:

                   std::string mouth;

                   void eat();

        };

     class pig:public Animal

      {

        void sleep();

       };//继承父类的所有内容,并可以拥有自己的内容

      void Animal::eat()

       {

         }//对函数内容进行填充

24. public:允许任何代码访问

      protected:允许这个类本身还有它的子类访问

      private:允许这个类本身访问

25.在类里面加 friend class xxoo,表示另一个类xxoo可以调用这个类里面的东西

26.直接创建一个指针并让它指向新分配的内存块

     int *pointer=new int;

          *pointer=110;//将内存块存进去内容

     std::cout<<*pointer;

           delete pointer;//要求每一个new都是需要一个delete,避免占用太多死内存,导致内存泄漏

27.在基类中声明函数为虚函数(在函数前加virtual),这样在子类中对函数进行重载后,在后期调用时,即使用基类类型定义子       类的构造函数如:

                             Parent *child=new Child("xxoo");//构造函数为Child,开辟了一个新内存空间放着构造函数,并向构造函数中输         入参数,但是由于是定义的指针类型是基类的,所以默认的内存块中的同名函数引用的是父类的,没办法体现出函数的重             载,所以在基类中将后期要重载的函数变为虚函数,这样就能使得成功调用重载函数

28.抽象方法:就使27中的虚函数=0,eg:virtual void play()=0;表示该函数没有内容定义,告诉编辑器不用查找里面的内容

29.基类中的析构函数应该写为虚函数,是为了子类中的析构函数能被正确调用,然后再调用基类中的析构函数,析构函数都是         在main()中所有代码执行结束后再调用的。

30.在进行多继承时,为了防止子类的两个基类中都含有相同的属性(此时两个基类可能是从同一个基类中继承而来得的),在         原基类继承更高级的基类中应该使用虚继承:

         class Teacher:virtual public Preson

          {

             };

          class Student:virtual public Person

           {

             };

           class Teachstudent:public Teacher,public Student

            {

              };//可以避免该类中含有两份Person内的属性

31.动态数组:int *x=new int[10];//x地址指向新开辟的整形数组的头地址

                       赋值方式为:x[1]=...;x[2]=...;

                       delete[] x;//删除开辟出来的数组空间

32.模板定义:

      template//模板定义某种模糊类型为T

       void swap(T &a,T&b)//模糊类型引用

         {

              T temp=a;

                  a=b;

                  b=temp;

           }

        int main()

         {

           int i1=100;

           int i2=200;

            swap(i1,i2);

            std::string s1="JJJ";

            std::string s2="rrr";

            swap(s1,s2);

            return 0;

           }

33.模板定义后的类进行初始化

        template

        class Myclass

         {

            Myclass();//构造函数

            void swap(T &a,T &b);//模糊类型引用的成员函数

             };

         Myclass::Myclass()

             {

               }//类模板定义后的构造函数初始化需要加

 

你可能感兴趣的:(编程语言)