美文网首页
C++语言学习之面向对象

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

作者: Dalvik_ | 来源:发表于2021-03-14 20:04 被阅读0次

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

  • C++面向对象
  • C 面向过程 函数+结构体
  • C++可以运行调用C语言 反之 C语言无法运行C++

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

  • C语言 const 常量是可以通过指针修改值
int main() {
    const int num = 9;
    int *p = #
    *p = 100;
    printf("num=%d\n", num);
    return 0;
}
  • C++ const 不能通过指针修改值
#include <iostream>
int main() {
    const int num = 9;
    int *p = &num; //这里直接报错 编译报错
    *p = 100;
    std::cout << "num=" << num << std::endl;
    return 0;
}

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

  • 引用的定义 int & num
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.函数重载与默认行参,无行参名的特殊用法

  • C语言不支持函数重载
  • C++ 语言支持函数重载 支持默认行参
// 函数重载 
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;
}
  • 对象的编写 赋值 调用 C++的对象指向的是一个指针
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;
}

相关文章

  • 好好干

    C语言面向过程 C++面向对象

  • C语言与C++

    1、学习目的: 2、C语言和C++的区别变化: (1)C语言面向过程,C++面向对象 eg.上课: C:小王 走...

  • 慕课网-c++教程起航篇-学习笔记

    c++教程起航篇 C语言是C++的子集。 c语言是面向过程的语言,而C++是面向过程的语言又是面向对象的语言。 C...

  • C++ — 类 & 对象超详解

    C++ 类 & 对象 C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是 C++ ...

  • CPP基础:面向对象编程

    面向对象编程 类 C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是 C++ 的核...

  • Python科学计算与数据处理7:类和对象

    类与对象 Python是面向对象的语言(object-oriented),同样面向对象的语言还有C++,Java等...

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

    1.C语言与C++语言的区别 C++面向对象 C 面向过程 函数+结构体 C++可以运行调用C语言 反之 C语言无...

  • C++学习笔记(1) 继承、多态、虚函数、析构方法

    最近开始学习 NDK 开发学习之前要就得先了解 C++ 语言啥是 C++ 呢?就是个面向对象版本的 c 语言管他是...

  • C++ 面向对象

    C++ 与 C语言 区别 C++ 面向对象、标准特性; C 面向过程,函数+结构体 C++可以运行C语言,反之就不...

  • 09.类

    面向对象语言的重头戏———类 我们知道C++是一门面向对象的语言,与面向过程的语言C不同的是C++的封装,继承和多...

网友评论

      本文标题:C++语言学习之面向对象

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