C++语言-面向对象

2022-07-28  本文已影响0人  大虾啊啊啊

1、C++的常量

c++中的常量是真的常量,如果放在C语言中,则可以通过指针修改,但是在C++中则会报错

//引入命名空间
using namespace std;

int main() {
    //c++中的常量
    const int number = 100;
    //不能修改
    // number = 200;
    //在C语言中能修改
//    int *number_P = &number;
//    *number_P = 300;
    cout << number << endl;

    return 0;
}

2、C++中的引用

在C语言中,我们可以通过通过指针互换两个数,在C++中,可以通过引用互换两个数,int & number,可以表示引用类型

    int number1 = 100;
    int number2 = 200;
    // changeNumberByC(&number1, &number2);
    changeNumberByCpp(number1, number2);
    cout << "number1 = " << number1 << " number2 = " << number2 << endl;

/**
 * c语言通过指针互换两个数
 * @param number1
 * @param number11
 */
void changeNumberByC(int *number1, int *number2) {
    int temp = *number1;
    *number1 = *number2;
    *number2 = temp;
}
/**
 * cpp通过引用互换两个数
 * @param number1
 * @param number2
 */
void changeNumberByCpp(int &number1, int &number2) {
    int temp = number1;
    number1 = number2;
    number2 = temp;

}
number1 = 200 number2 = 100

3、C++中的函数重载

和Java一样在C++中支持函数重载,并且支持在函数中增加默认参数这一点和Kotlin一样。C语言不支持函数重载

void add() {
    cout << "add" << endl;
}

void add(int i) {
    cout << "add:" << i << endl;
}
void d(int i,int j,int k = 100) {
    cout << "add:" << i << endl;
}


4、没有名字的函数参数

没有名字的函数参数,作为后续拓展使用,源码中常常体现。

void del(int) {
    cout << "del" << endl;
}

5、C++中的类、对象

//
// Created by DELL on 2022/7/28.
//

#ifndef C__01_STUDENT_H
#define C__01_STUDENT_H
// Student.h 头文件  只写声明,不写实现

class Student {
private://下面的代码(成员和函数),都是私有
    char *name;
    int age;
public://下面的代码(成员和函数),都是公开
    void setName(char *name);

    char *getName();

    void setAge(int age);

    int getAge();
};


#endif //C__01_STUDENT_H

2、创建实现文件
根据 Student.h 头文件 ,写实现

//
// Created by DELL on 2022/7/28.
//

#include "Student.h"
// 根据 Student.h 头文件 ,写实现

void Student::setAge(int age) {
    // C++对象指向的是一个指针
    // -> 调用一级指针的成员
    this->age = age;
}

int Student::getAge() {
    return this->age;
}

void Student::setName(char *name) {
    this->name = name;
}

char *Student::getName() {
    return this->name;
}

//C++创建对象的方式(栈空间)
    Student student1;
    student1.setAge(29);
    student1.setName("daxiaa");
    cout << "age = " << student1.getAge() << " name = " << student1.getName() << endl;

age = 29 name = daxiaa

2、通过指针的方式创建对象
通过指针的方式创建对象,需要注意使用new 关键字创建。访问对象的属性成员的时候使用->符号

     //通过指针方式创建对象(堆空间)
    Student *student2 = new Student();
    student2->setAge(39);
    student2->setName("大侠啊啊");
    cout << "age = " << student2->getAge() << " name = " << student2->getName() << endl;
    if (student2) {
        delete student2;//必须手动释放堆空间的对象student2
        student2 = NULL;//指向NULL的地址区域
    }

age = 39 name = 大侠啊啊

C++创建对象的两种方式除了使用方式不一样之外,第一种是在栈内开辟内存空间,第二种则是在堆中开辟内存空间,因此第二种需要手动释放内存空间。

上一篇 下一篇

猜你喜欢

热点阅读