1. 类的特性

    • 抽象、封装继承多态、重载
  2. class 和 struct 区别
    • C中struct仅仅可以包含数据成员,不可以有成员函数,属于复杂数据结构。
    • C++ 中struct成员访问权限默认为public;继承方式默认public;另外class可以用在模板的声明。template <class/typename T>
  3. 构造函数的初始化列表
    • 顺序和成员声明顺序一致
    • 必须应用的场景:初始化const、引用;调用父类的非默认构造函数。B(int x,int y):A(x)
  4. class A
    {
    public:
    A(int k) : j(k), i(j) // i first. j follow
    {
    // code here
    } private:
    int i;
    int j;
    }

    静态数据成员和全局变量的区别:

    • 名称空间不同,避免冲突。
    • 支持信息封装,属于成员变量,可以设置为private。
    • 注意静态非常量数据成员在类外初始化,静态常量数据成员在类内初始化或类外初始化。非静态常量必须在初始化列表。非静态非常量在初始化列表或构造函数。
  5. 空类的成员函数
    • 默认构造函数和复制构造函数
    • 析构函数(不可以被重载,不带参数)
    • 赋值函数(=)
    • 取值运算(&)
  6. explicit 修饰的构造函数
    • 只一个参数(其余为默认参数)的构造函数支持隐式转换。test(int i) { ... } ;  test a = 1;
    • explicit可以关闭这种隐式转换。仅可以通过test a(1);
  7. 析构、构造函数与虚函数的关系
    • 构造函数不可以写成虚函数,虚函数需要虚指针和虚表的支持,而这些是构造函数负责实现的。
    • 析构函数需要写成虚函数,可以保证子类析构函数的正常调用。 Base* a = new Derived(); delete a;
  8. 复制构造函数
    • 概念:特殊构造函数,根据同类其他对象构建以及初始化新对象。
    • 调用场景:按值传递,按值返回,使用对象进行初始化(test b; test a = b;)。
    • 默认浅复制。深复制 vs 浅复制,当对象中引用了外部内容,如果新旧指向同一内容为浅复制,否则为深复制。
    • 继承类的处理:调用基类的复制构造函数。
    • 与赋值函数的区别:1)复制是初始化对象,赋值是修改原有对象。2)复制是初始化,赋值首先检查两个对象是否一致,一致返回,不一致,释放左值对象的内存并重新构建。
  9. // 复制构造函数
    A a;
    A b = a; //赋值函数
    A a;
    A b;
    a = b; //赋值函数举例
    string& string::operator = (const string &other)
    {
    //检查是否一致
    if(this == &other)
    return *this;
    // 释放内存
    delete[] m_string;
    // 重新分配
    m_string = new char[strlen(other.m_string) + ];
    strcpy(m_string, other.m_string); return *this;
    }

    临时对象

    • 出现情景:参数按值传递,返回值按值传递。
  10. C++函数重载

    • 为什么可行:C++命名规则,包含参数个数和参数类型信息。
    • 注意:返回值不同,const与否不足以区分函数。 
    • 重载和重写的区别:1)重载不同版本的函数实现,方法名相同而参数列表不同【编译时】。2)重写是子类重写父类的虚函数或抽象函数,相同的方法名和参数列表以及返回值【运行时】。
    • 注意:隐藏(重定义):子类重定义父类的同名函数(参数列表可以不同),隐藏父类同名函数。

C/C++程序基础 (六)面向对象的更多相关文章

  1. Java基础-初识面向对象编程(Object-Oriented-Programming)

    Java基础-初识面向对象编程(Object-Oriented-Programming) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Java是一门面向对象的程序设计语言.那么什 ...

  2. (转)Python成长之路【第九篇】:Python基础之面向对象

    一.三大编程范式 正本清源一:有人说,函数式编程就是用函数编程-->错误1 编程范式即编程的方法论,标识一种编程风格 大家学习了基本的Python语法后,大家就可以写Python代码了,然后每个 ...

  3. [.net 面向对象编程基础] (12) 面向对象三大特性——继承

    [.net 面向对象编程基础] (12) 面向对象三大特性——继承 上节我们说了面向对象的三大特性之一的封装,解决了将对同一对象所能操作的所有信息放在一起,实现统一对外调用,实现了同一对象的复用,降低 ...

  4. Day7 - Python基础7 面向对象编程进阶

    Python之路,Day7 - 面向对象编程进阶   本节内容: 面向对象高级语法部分 经典类vs新式类 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 Socket开发基础 作业:开发一个 ...

  5. Python 基础 四 面向对象杂谈

    Python 基础  四  面向对象杂谈 一.isinstance(obj,cls) 与issubcalss(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls ...

  6. 自学Python之路-Python基础+模块+面向对象+函数

    自学Python之路-Python基础+模块+面向对象+函数 自学Python之路[第一回]:初识Python    1.1 自学Python1.1-简介    1.2 自学Python1.2-环境的 ...

  7. C#_02.15_基础六_.NET类

    C#_02.15_基础六_.NET类 一.类继承是一个类在另一个类的基础上进行的扩展. 继承的子类拥有父类的全部成员.索引子类拥有本身的全部成员以及父类的全部成员. 可以对基类成员进行隐藏,如果必须的 ...

  8. JAVA(一)JAVA基础/面向对象基础/高级面向对象

    成鹏致远 | lcw.cnblog.com |2014-01-23 JAVA基础 1.开发环境搭建 JAVA程序的执行流程 JAVA命令->要使用一个*.class文件(类文件)->通过c ...

  9. {Django基础六之ORM中的锁和事务}一 锁 二 事务

    Django基础六之ORM中的锁和事务 本节目录 一 锁 二 事务 一 锁 行级锁 select_for_update(nowait=False, skip_locked=False) #注意必须用在 ...

  10. Python基础7 面向对象编程进阶

    本节内容: 面向对象高级语法部分 经典类vs新式类 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 Socket开发基础 作业:开发一个支持多用户在线的FTP程序 面向对象高级语法部分 经典 ...

随机推荐

  1. CCF201612-1 中间数(二分思想)

    问题链接:CCF201612试题. .对n个数进行排序,找出中间那个数,然后将中间那个数的左右与其相等的数去掉,看左右剩下的数个数是否相等,如果相等则中间那个数就是答案,否在输出-1. 问题描述 问题 ...

  2. htmlunit最具有参考意义项目

    ### HtmlUnit What? - 项目1 https://gitee.com/dgwcode/spiderTmallTradeInfo - 项目2 https://gitee.com/dgwc ...

  3. Testing Round #12 B

    Description A restaurant received n orders for the rental. Each rental order reserve the restaurant ...

  4. select 下拉框的复选

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAdUAAAFSCAIAAAArbtLAAAAgAElEQVR4nOydd1gUWaK3Z2/YvXd3v7 ...

  5. jQuery对ajax的支持

    有load,get,post和ajax四个方法都可以,其中后三个直接使用$.xx调用 使用方法大致相同,这里只介绍get和post方法 -------------------------------- ...

  6. PHP setcookie()用法

    定义和用法 setcookie() 函数向客户端发送一个 HTTP cookie. cookie 是由服务器发送到浏览器的变量.cookie 通常是服务器嵌入到用户计算机中的小文本文件.每当计算机通过 ...

  7. Maven的学习资料收集--(一)环境搭建

    这几天在做项目的时候用到了maven,但是自己没有从来没有接触过,所以咋网上找资料,终于找到了一下的资料,这个是别人总结的,我只是转载过来积累.请尊重原创. 官网地址:http://maven.apa ...

  8. bank conflct 一句话总结

    由于最新的多播模式区别于原来的广播模式,原来同一个warp不同线程访问同一个bank的相同地址不再是bank conflict, 现在总结为:只要同一个 warp 的不同线程会访问到同一个 bank ...

  9. 【Java/Android性能优5】 Android ImageCache图片缓存,使用简单,支持预取,支持多种缓存算法,支持不同网络类型,扩展性强

    本文转自:http://www.trinea.cn/android/android-imagecache/ 主要介绍一个支持图片自动预取.支持多种缓存算法.支持二级缓存.支持数据保存和恢复的图片缓存的 ...

  10. Google地址

    Google的访问一直很不稳定,经常被墙,无意间发现以下一些地址,特此记录. https://g.ttlsa.com/ https://wen.lu/ http://sinaapp.co https: ...