zoukankan      html  css  js  c++  java
  • c++ 222


    【成功者的习惯】

    1.背后说别人好话;听到某人说别人坏话时只微笑;

    2.过去的事不全让人知道;

    3. 尊敬不喜欢你的人;对事无情,对人有情;

    4.多做自我批评;为别人喝彩;

    5.感恩;学会聆听;

    6.说话时常用“我们”开头;

    7.喜欢自己。


    1, c 的局部/全局变量声明要在所有的函数之前 , 所有的可执行语句之前.

    2, 函数原型,c可省略参数而在声明明完整,c++必须说明.

    3, c++使用const 定义常量 比define 更安全灵活.

    4, c 不存在函数重载,

    5, malloc()/free() 要包含头文件,   new/delete; malloc 不知道存储类型,其返回类型要强制转换. 无法调用构造函数.

    6, OO 基本特征  封装  继承  多态

    7,封装就是将抽象到的  数据 方法  形成一个类.

    8, 继承代码的共享是静态的, 派生类自动共享基类代码段. 封装代码是动态共享的,某个类多个对象运行共享.

    9, 组合  OO概念, 某个对象包含其它对象的机制,  组合分 聚合 和 关联

    某个类是其它类的 组件, 就会聚合.  某个类需要其它类的服务  就会关联.

    10, 动态特性  多态 虚函数  动态联编

    多态是通过虚函数表 实现的, 所有对象共享该表.

    联编 静态联编出现在编译链接,

    11, 对象引用  参数为引用类型, 对象指针 参数为指针类型. 对象引用访问成员使用 点, 对象指针访问成员使用指向.

    12, 可以将类体整个定义部分放头文件中, 类的大扩号后加分号.

    13,在类的成员中调用非成员函数 , 必须加上::

    14, 三种类   类, 结构, 联合 class  struct  union

    15, 构造函数  给对象分配空间. 及对象初始化工作. 必须与类名相同 . 没有返回值.

    16,拷贝构造  基于同一类的其他对象的构件及初始化.  三种情况  用对象作值传递, 返回值是对象,用对象作初始化,

    17, 如果数据成员中有指针对象, 要用深拷贝.

    18,静态成员变量 静态成员函数 都与对象无关, 属于整个类, 类范围共享数据的方式 . 静态成员函数通过类名 或 对象名访问 .

    不可调用非静态变量, 不可为虚函数 .  缺少this指针. (通过类名访问)

    19, 当类A内声明 某函数 或类 为友元, 该函数或类 可以直接访问 A中所有成员(私有,保护,公有).

    20, 派生 不能继承基类的构造和析构,可以用全局分辨符::直接访问基类中的同名函数

    21,虚基类, 先调用 虚基类构造,再非虚基类,最后调用派生类构造  .  如果虚基类 由非虚基派生,构造时先调用非虚基

    22,struct 默认访问权限是public  class 是private , 涉及继承关系时亦当如此.

    23,派生类构造时 可以向基类传参数

    24,binding  实现函数调用的, 分为早绑定 和晚绑定.  晚绑定 又名 动态绑定 或运行时. 即在编译阶段 编译器不知道对象实际类型但能找到和调用正确函数体.

    为了实现晚绑定,必须在基类中使用virtual 虚函数. 晚绑定只对虚函数.而且只使用一个虚函数基类.  晚绑定是多态的基础.

    25, 虚函数 是一种动态的重载方式 ,派生类中重载的虚函数返回类型和 参数与基类中原型相同. 

    虚函数代表 扩充应当发生/实现/修改 的地方. 多态是通过指向基类的指针或引用 来操作的.

    26,纯虚是必须实现,否则不能实例化.用于规范而非多态.

    27,带纯虚的类叫抽象类, 主要用于标准化,

    28,基在多态方面的支持, 基类可以调用 派生类中的同名成员函数.

    29,编译期多态无论是 时间空间都比 运行期多态要好,.  

    • 构造函数中调用自己类中实现的虚函数 会实行静态绑定. ,
    • 析构函数可以虚, 将形成动态绑定.

    30, 地址是内存单元编号, 指针用于存放内存地址.编号是地址,地址是指针 . 间接寻址操作符* 又称取内容运算.

    指针是一种值,可以存储/求值/传递/返回. 引用有类型但不是值.

    指针变量的声明与指向对象类型兼容, 引用是现有对象别名,是间接访问形式.

    不存在空引用,必须创建时就初始化.指针可以为空.

    一个引用必须永远指定一个对象,不可改变.

    31, 变量的指针 是指变量的地址.   指针变量  存储的是 数据的地址,用于指向另一个变量.

    32, 不同对象的指针比较  是对象同一性.

    33, 声明函数指针时, 即使没有参数也要带一对括号. int (*f1)(int i)

    34, const 修饰* 

    const 在 * 之前, 常量指针,所指是常量 内容不可变.

    const 在 * 之后, 指针常量,所指地址不可变.

    35, 值的定义

    • 能被存储
    • 与数据结构结合
    • 作为参数传递或返回
    • 能被求值

    36,数组名是常量指针, 数组名在表达式中不可修改.

    37,指针数组里的元素都是某一类型指针, 数组名是常量指针,不能进行 增量运算.例如字符串数组

    38,常见指针问题

    • 指针初始化
    • 越界
    • 指向局部变量
    • 指向转移

    39,字符串是一个常量指针 , 与数组相同意义,指向字符串第一个字符的指针.

    40, 字符串函数

    strcpy(char *dest,const char *src);strncpy(char *dest,const char *src,size);//copy

    strcat(char *dest,const char*src);strncat(char *dest,const char* src,size);//

    strcmp(const char*s1,const char*s2);

    strlen(const char *s);

    strchr(const char*s,char c); //扫描s里是否有c ,如果有则返回第一次出现的位置指针.没有返回null.

    strstr(constr char*s1,const char*s2);//这里s2是子串

    41,字符数组 可以定义时整体赋值, 但不能在赋值语句中整体赋值. 字符指针变量可以.   指针变量的值可以改变的, 数组名 不可以.

    42,单目运算符重载为成员函数,双目重载为友元函数. 例如 使用友元函数重载复数四则运算符,由于没有this指针,参数是引用类型.

    43,new delete 重载分为全局 和局部 两种,一般一个类的局部方式. 使用malloc() , calloc() ,reallocfenp() 分配的空间不要用delete释放

    44,成员运算符 和 友元运算符

    • friend <类型> operator@(参数表)
    • <类型>operator<运算符>(<参数表>)

    {

    函数体

    }

    • <类型>operator@(参数表)
    • <类型> 类名:: operator <运算符>(<参数表>)

    {

    如果成员运算符是单目的, 参数表为空,当前操作数通过this 指针 隐含传递.

    45,相同结构体变量 可以相互赋值 , 数组不可以 通过数组名赋值.

    am. official  7-11

    pm.  audition  12 - 17

    nit. research  or call me study 18-21

  • 相关阅读:
    webpack4.x相关笔记整理
    vue原理探索--响应式系统
    git常用命令备忘
    小程序开发知识点及坑点总结
    无异常日志,就不能排查问题了???
    【从单体架构到分布式架构】(三)请求增多,单点变集群(2):Nginx
    【从单体架构到分布式架构】(二)请求增多,单点变集群(1):负载均衡
    【从单体架构到分布式架构】(一)万丈高楼平地起:环境准备
    一个接口查询关联了十几张表,响应速度太慢?那就提前把它们整合到一起
    docker基础:容器操作命令
  • 原文地址:https://www.cnblogs.com/iamgoodman/p/3285858.html
Copyright © 2011-2022 走看看