C++学习记录


1.const,mutable,初始化列表,this指针

#include<bits/stdc++.h>
using namespace std;
#define N 200002
#define mod 80112002
class CGirl{
public:
    mutable string m_name;//mutable可以突破const限制
    int m_age;
    //普通构造函数
    CGirl(string name,int age){
        m_name=name,m_age=age;
    }
    //初始化列表
    // CGirl(string name,int age):m_name("美丽的"+name),m_age(age-1){
    //     m_name="西瓜";//如果在函数中赋值,会覆盖掉初始化列表的值
    //     cout<<"调用了构造函数\n";
    // }
    void show() const{//const表示不能修改
        cout<<"姓名:"<<m_name<<",年龄:"<<m_age<<endl;
    }
    const CGirl& pk(const CGirl& g) const{
        if(g.m_age < this->m_age)return g;
        return *this;
    }
};
int main(){
    CGirl g1("冰冰",19),g2("玲玲",15),g3("水水",20),g4("火火",77),g5("木木",28);
    const CGirl& g=g1.pk(g2).pk(g3).pk(g4).pk(g5);
    g.show();
    return 0;
}

2.static

1.静态成员不属于对象
2.静态成员变量&函数:与全局变量&函数性质相似,同时类的对象还可以访问静态成员
3.静态成员函数只能访问静态成员
4.静态成员函数中没有this指针
5.语法

int CGirl::m_age=8;//初始化静态成员变量

6.空指针可以调用没有用到this指针的非静态成员函数

使用类

友元

作用

用于访问私有成员

友元全局函数

在这里插入图片描述

友元类

在这里插入图片描述
友元不是相互的

友元成员函数

语法有点复杂,就不了解了

运算符重载

语法:返回值 operator 运算符(参数列表)

  • 非成员函数
    在这里插入图片描述
  • 成员函数
    在这里插入图片描述
    在这里插入图片描述

左移运算符 <<

全局函数实现
在这里插入图片描述
用成员函数不大行,不然就要写成 g << cout 了

下标运算符

在这里插入图片描述

下标运算符必须以成员函数的形式重载
在这里插入图片描述

赋值运算符

在这里插入图片描述

括号运算符

在这里插入图片描述

一元运算符

++举例
在这里插入图片描述

自动类型转换

隐式类型转换

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

转换函数

在这里插入图片描述
在这里插入图片描述

继承

在这里插入图片描述

继承方式

在这里插入图片描述
using 更改访问权限
在这里插入图片描述

构造函数继承

在这里插入图片描述

在这里插入图片描述

名字遮蔽和类作用域

名字覆盖

若基类的成员与派生类的成员重名,则调用的是派生类的成员(记住不是覆盖!!)

类作用域

名字遮蔽的原因:
在这里插入图片描述

继承的特殊关系

在这里插入图片描述

多态

在这里插入图片描述
在这里插入图片描述

如何析构派生类

当派生类析构函数执行后,会强制执行基类析构函数
当基类指针a指向派生类时,若delete a,只会调用基类析构函数,存在隐患
所以,我们应该将基类的析构函数设置为virtual,这样当delete a 时,会先调用派生类的析构函数,然后调用基类析构函数

纯虚函数和抽象类

在这里插入图片描述

dynamic_cast

在这里插入图片描述

typeid运算符和type_info类

在这里插入图片描述
在这里插入图片描述

泛编程

自动推导类型

auto

函数模板

在这里插入图片描述

具体化的函数模板

在这里插入图片描述

在这里插入图片描述

函数模板分文件编写

在这里插入图片描述

函数模板高级

在这里插入图片描述

类模板

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
容器都是用模版类实现的

模板类和函数

在这里插入图片描述

模板类与友元

在这里插入图片描述

将模板类用作参数

在这里插入图片描述

编译预处理

1.包含头文件

在这里插入图片描述
在这里插入图片描述

2.宏定义

在这里插入图片描述

3.条件编译

在这里插入图片描述
在这里插入图片描述

编译与链接

在这里插入图片描述
在这里插入图片描述
黄->蓝->粉: 预处理
粉->黑 : 编译
黑->棕 : 链接

命名空间

作用

在这里插入图片描述

语法

在这里插入图片描述

使用命名空间

1.命名空间::名字
2.using 命名空间::名字
3.using namespace 命名空间

注意事项

在这里插入图片描述

c++风格类型转换

在这里插入图片描述
暂时对新手没啥用处,就不记录了

迭代器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

基于范围的for循环

在这里插入图片描述
加只读引用效率更高
在这里插入图片描述

list链表容器

构造函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

STL算法

在这里插入图片描述

智能指针

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
…………………………………………

异常(不是很重要)

断言

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

委托构造

将构造函数简化
在这里插入图片描述

继承构造

在这里插入图片描述

lambda函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

右值引用

在这里插入图片描述
右值引用后就变为了左值

移动语义

在这里插入图片描述
在这里插入图片描述

完美转发

在这里插入图片描述
在这里插入图片描述

可变参数模板

支持任意类型,任意个数的参数
在这里插入图片描述

chrono时间库

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值