day1_C++

  1. C与C++的关系

  1. C语言是面向过程的,但C++是面向对象的

  1. 面向对象:

  1. 封装:将函数、类等进行打包封装

  1. 继承:直接将父辈的东西拿过来用,不需要重新定义。C也有

struct person{
    char name[20];
    int age;
    int height;
};
struct student{
    struct person per;    //继承父辈的东西而不需要重新定义
    int score;
};
  1. 多态:类似于回调函数,不同类的对象发出相同的消息将会有不同的实现。

  1. C++完全兼容C语言的内容

  1. C++基础

  1. 文件后缀为.cpp

  1. 头文件为<iostream>

  1. g++ 编译

  1. 输入输出流(stream)

  1. 输入——cin

cin >> val;

  1. 输出——cout

cout <<  "hello" <<10 < val  << endl; 

  1. 需要在开头写 using namespace std;

若没有写这句,在使用cin和cout、endl时需要在前面加std::

  1. 命名空间——namespace

  1. 使用目的:解决名词污染,区分不同人写的代码

namespace lisi{
    void function(){
        cout << "lisi::function" << endl;
    }
}
namespace zhangsan{
    void function(){
        cout << "zhangsan::function" << endl;
    }
}
int main(){
    lisi::function();
    
    using namespace zhangsan;    //使用这句表示,该句以后都是张三中的函数、对象等
    function(); 
}
  1. 函数重载

  1. 定义:同名不同参,函数名字可以相同,但此时参数列表必须不同

  1. 在编译时会在参数名后加上参数类型,让编译通过

  1. 反编译:

objdump -D test > a.txt

  1. 默认参数

  1. 在定义函数时,就给参数赋初值;

  1. 在调用函数时若没有传参就会使用默认参数,若传参了就会使用传参的值

  1. 默认参数必须要写在正常参数之后

  1. 在使用有默认参数的函数调用时,应注意是否会影响函数重载

  1. 引用 reference

  1. 新的数据类型,是变量的别名,作用类似于指针

  1. 引用必须初始化,在创建引用变量时就应指明引用谁,且初始化后指向的对象不能改变

  1. 引用传递时,主函数的值会改变

int main(){
//  type    name     val
    int     val =    10;
    int&    ref =    val;
    int*    ptr =    &val;
    
    val++;
    ref++;
    cout << val << "::" << ref << endl;    //结果都为12
    cout << &val << "::" << &ref << endl;    //地址也相同
}
  1. 指针和引用的区别

指针

引用

能否为空

可以

不可以

能否改变指向

可以

不可以

大小

4B

所指向的变量的大小

安全性

灵活性

引用的安全性更高。因为引用不能改变所指的对象。

指针的灵活性更高。可以改变指向的对象,提高了灵活性,降低了安全性。

  1. 动态内存——new/delete

int main()
{
    char *ptr = new char;        //指向没有初始化的char
    char *str = new char(10);    //指针指向的对象初始化为10
    char *btr = new int();       //指向初始化为0的int
    char *atr = new char[10];    //有10个char
    
    delete []atr;                //在delete后应该将该指针指向空
    delete str;
    delete ptr;
    delete btr;

    atr = NULL;
    btr = NULL;
    ptr = NULL;
    str = NULL;
}
  1. new和malloc的区别

new

malloc

属性

关键字

库函数

参数

new会自己计算内存大小

malloc需要人为赋值大小

返回值

由new后面跟的类型决定,某些情况下,还可以赋初值,未申请成功时会返回NULL

void * ,需要强制转换为需要的类型

释放

delete name;

free( name );

内存区域

自由存储区

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值