zoukankan      html  css  js  c++  java
  • C++ 一些容易忽略的基本点

    new 高级应用

    delete 其他用途帮助函数严格匹配类型

    char teststr[100] = { 0 };// 静态区
    void test3()
    {
    // 堆区
    int *p = new int[3]{1, 2, 3};
    //分配到以teststr开头的空间内 全局静态区
    int *p2 = new (teststr) int[3]{1,2,3};
    for (int i = 0; i < 3; i++)
    {
    cout << p[i] <<" "<< &p[i] << " " << p2[i]<<" " << &p2[i] << endl;
    }
    // 这段内存可以反复利用 同理 栈区 都可以
    // 无论堆栈静态区 都不能delete p2
    int *p2_ = new (teststr) int[3]{4, 5, 6};

    静态区对象优先main执行
    基本数据类型malloc new一样
    malloc free不会调用构造析构函数 不能混用

    通过重载new 和delete 可以统计对象个数
    规避一个指针被重复释放

    函数模本和类模板 2这区别 函数模板使用不需要置顶类型 因为编译器会自动帮你做 类模板则不会

    函数模板调用的时候才编译 否则不会进行语法检查

    函数模板 返回两个值中的较小者 同时能正确处理字符串

    可以重载string类的>运算符 相比c里面的宏 的确很灵活

    C++ 新语法 自动推导数据类型

    C++类 析构函数 为虚函数 多态

    友元函数能访问私有数据成员

    类型一致 的初始化可用initializer_list
    如果是不一致的 可变参数模板
    结构体具备类的所有功能
    设置一个不允许回收不允许在堆上创建
    重载delete new = delete删除函数
    默认继承 struct公有 而class私有
    有了初始值就不能私用大括号初始化
    但是数组成员不能有初始值 而且只能用=来初始值
    例如 字符数组不可以 字符指针可以
    拓展作用域 类的声明

    非静态成员函数后面加const(加到非成员函数或静态成员后面会产生编译错误),表示成员函数隐含传入的this指针为const指针,决定了在该成员函数中,任意修改它所在的类的成员的操作都是不允许的(因为隐含了对this指针的const引用);唯一的例外是对于mutable修饰的成员。加了const的成员函数可以被非const对象和const对象调用,但不加const的成员函数只能被非const对象调用
    一般对于不需修改操作的成员函数尽量声明为const成员函数,以防止产生const对象无法调用该成员函数的问题,同时保持逻辑的清晰
  • 相关阅读:
    树莓派远程连接工具VNC使用教程
    winform开发之UI系列
    设计winform自带动态加载工具按钮和实现热键响应
    winform版弹框操作
    vs2012中将图片放到resource中进行调用
    构建winform控件数据缓存器
    c#跨线程访问控件帮助类
    CSS3过渡
    JavaScript 内置对象 Array 数组
    JavaScript 数组sort方法使用
  • 原文地址:https://www.cnblogs.com/huoxl/p/4557171.html
Copyright © 2011-2022 走看看