C++语言学习之面向对象

2021-03-14  本文已影响0人  Dalvik_

1.C语言与C++语言的区别

2.常量之C的常量与C++的常量

int main() {
    const int num = 9;
    int *p = #
    *p = 100;
    printf("num=%d\n", num);
    return 0;
}
#include <iostream>
int main() {
    const int num = 9;
    int *p = &num; //这里直接报错 编译报错
    *p = 100;
    std::cout << "num=" << num << std::endl;
    return 0;
}

3.引用的原理与常量的引用

int main() {
    int num1 = 90;
    int &num2 = num1;
    cout << "num1的地址:" << &num1 << "  num1的值:" << num1 << endl;
    cout << "num2的地址:" << &num2 << "  num1的值:" << num2 << endl;
    return 0;
}
输出:
num1的地址:0x61fe44  num1的值:90
num2的地址:0x61fe44  num1的值:90
//形参不是引用类型是 值复制  值传递  
void function1(int num) {
    cout << "num的地址:" << &num << endl;
}
//形参是引用类型   内存地址是一样的
void function2(int &num) {
    cout << "num的地址:" << &num << endl;
}

int main() {
    int num1 = 90;
    int &num2 = num1;
    cout << "num1的地址:" << &num1 << "  num1的值:" << num1 << endl;
    cout << "num2的地址:" << &num2 << "  num1的值:" << num2 << endl;

    function1(num1);
    function2(num1);
    return 0;
}

输出:
num1的地址:0x61fe44  num1的值:90
num2的地址:0x61fe44  num1的值:90
num的地址:0x61fe20
num的地址:0x61fe44
int main() {
    int num1 = 90;
    int &num2 = num1;
    const int &num3 = num1; //常量的引用类型
    num2 = 100;
    // num3 = 99;//这里直接报错  常量引用类型不能修改值
    cout << "num1的地址:" << &num1 << "  num1的值:" << num1 << endl;
    cout << "num2的地址:" << &num2 << "  num1的值:" << num2 << endl;
    return 0;
}

4.函数重载与默认行参,无行参名的特殊用法

// 函数重载 
void func(int num1) {
    cout << "num1的值:" << num1 << endl;
}

void func(int num1, int num2) {
    cout << "num1+num2的值:" << num1 + num2 << endl;
}
int main() {
    func(20);
    func(100, 200);
    return 0;
}
输出:
num1的值:20
num1+num2的值:300
// 默认形参
void func(int num1, int num2 = 66) {
    cout << "num1+num2的值:" << num1 + num2 << endl;
}

int main() {
    func(20);
    func(100, 200);
    return 0;
}
输出:
num1+num2的值:86
num1+num2的值:300
void change(int num1, int) {
}
int main() {
    change(100, 200);
    return 0;
}

5.C++面向对象

//Student.h 头文件 只写声明 不写实现
class Student {
private:
    char *name;
    int age;
public:
    void setName(char *name);

    void setAge(int age);

    char *getName();

    int getAge();
};

// Student.cpp  实现文件 根据声明 来写实现
#include "Student.h"
void Student::setName(char *name) {
    this->name = name;
}

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

void Student::setAge(int age) {
    this->age = age;
}

int Student::getAge() {
    return this->age;
}
int main() {
    Student student; //栈区开辟
    student.setName((char *) "老六");
    student.setAge(20);
    cout << "student的name:" << student.getName() << "  age:" << student.getAge() << endl;


    Student *stu = new Student; //堆区开辟开辟内存
    stu->setName((char *) "老王");
    stu->setAge(36);
    cout << "stu的name:" << stu->getName() << "  age:" << stu->getAge() << endl;

    delete stu; //需要手动释放
    stu = NULL; //指向空指针
    return 0;
}

上一篇 下一篇

猜你喜欢

热点阅读