美文网首页
C++ 面向对象

C++ 面向对象

作者: ZoranLee | 来源:发表于2021-03-10 17:06 被阅读0次

    C++ 与 C语言 区别

    • C++ 面向对象、标准特性; C 面向过程,函数+结构体
    • C++可以运行C语言,反之就不行
    • 85%用 C++ 去写
    1、C语言的标准支持:#include<stdio.h>
    2、C++标准支持:#include<iostream>
    

    C++

    • 命名空间 (相当于Java内部类)
    using namespacing std; /
    
    • 前面引入了命名空间,后面可以省略,eg.
    std:cout<<"C++语言"<<std:endl;
    可以简写为
    cout<<"c++语言学习"<<endl
    
    • endl(换行) 相当于 \n

    • << 是操作符重载,具体实现如下:【不是数学里边的运算】

    image.png
    cout<<"字符"<<endl;
    
    • 换行也可以用\n
    cout<<"铁头功\n"
          <<"金刚腿\n"
          <<"铁布衫\n";
    

    常量

    • C语言的常量是个假常量,用指针可以改
    int main(){
    const int number = 100;
    int *numP = &number;
    *numP = 1000;
    printf("%d\n",number);//1000 值已经修改了
    return 0;
    }
    
    • C++语言的常量是真常量,不能修改
    const int number = 100;
    //int *numP = &number; 编译的时候 就会报错
    //*numP = 1000;编译的时候 就会报错
    printf("%d\n",number);//1000 值已经修改了
    

    引用

    • 互换两个数
      1、指针取地址
    void numberChange(int * number1,int * number2){
      int temp = 0;
      temp = * number1;
     *number1 = * number2;
    *number2 = temp;
    }
    int main(){
    int number1 = 10;
    int number2 = 20;
    numberChange(&number1,&number2);
    return 0;
    }
    
    

    原理:


    image.png

    2、C++ 的引用 互换

    void numberChange2(int & number1, int & number2){
    int temp = 0;
    temp = number1;
    number1= number2;
    number2 = temp;
    }
    int mian(){
    int number1 =10;
    int number2 = 20;
    numberChange2(number1,number2);
    return 0;
    }
    

    原理图

    image.png

    3、常量引用

    • const Student & student
    • 不能修改其中的变量
    typedef struct {
      char name[20];
      int age;
    }Student;
    
    
    image.png

    4、函数重载

    • C语言不支持函数重载

    • C++ 支持
      using name


      image.png
    • 建造者设计模式

    • 规范写法
      1、要有头文件:.h .hpp ,实现文件:.c .cpp

    image.png

    2、头文件只写申明不写实现

    #include<iostream>
    using namespace std;
    class Student{
    private :
      char * name;
      int age;
    public:
      void setAge(int age);//声明函数
      void setName(char *age);
      int getAge();
      char * getName( );//声明函数
    }
    

    具体实现

    .c .cpp
    #include "Student.h" //引入头文件
    void Student::setAge(int age){
    this->age = age;
    }
    void Student::setName(char * name){
    this->name = name;
    }
    
    
    Student * student1;//栈空间
    student1.setAge(99);
    student1.setName("lisa");
    cout<<"name:"<<student1.getName()<<",age:"<<student1.getAge()<<endl;
    
    //堆空间
    Student * student2 = new Student();
    student2 ->setAge(80);
    student2->setName("lisa");
    delete student2;//必须手动释放对象student2
    //不能用free(student2)
    

    相关文章

      网友评论

          本文标题:C++ 面向对象

          本文链接:https://www.haomeiwen.com/subject/djwwqltx.html