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. Luogu P4551 最长异或路径 01trie

    做一个树上前缀异或和,然后把前缀和插到$01trie$里,然后再对每一个前缀异或和整个查一遍,在树上从高位向低位贪心,按位优先选择不同的,就能贪出最大的答案. #include<cstdio&g ...

  2. Storm概念学习系列之Topology拓扑

    不多说,直接上干货!   Hadoop 上运行的是 MapReduce 作业,而在 Storm 上运行的是拓扑 Topology,这两者之间是非常不同的.一个关键的区别是:一个MapReduce 作业 ...

  3. Linux利用iptables实现真-全局代理

    对于经常要浏览油管等被墙网站的人而言,利用代理来实现fq是非常有必要的.现在fq的方法中,最为主流的应该要数ssr了,因此本教程都是基于ssr的socks5代理而言的. 在windows中,ssr客户 ...

  4. Java 内存模型(一)

    打算花比较长的篇幅来描述下自己理解的JVM,尽量描述的清晰易懂一些,从简单慢慢到慢慢深入,一方面自己也复习一下,一方面也供大家参考,少走些弯路.鉴于本人水平有限,如有错误的地方,欢迎指出,感谢. 一段 ...

  5. 用boost模块加速你的drupal站

    boost模块可以对 html, xml, ajax, css,  javascript进行缓存,极大提升游客访问的速度,几乎可以和静态页面媲美.下载boost http://drupal.org/p ...

  6. Spring Cloud 服务发现和消费

    服务的发现和消费 有了服务中心和服务提供者,下面我们来实现一个服务的消费者: 服务消费者主要完成两个任务——服务的发现和服务的消费,服务发现的任务是由Eureka客户端完成,而服务消费的任务是由Rib ...

  7. 对CSRF的理解及防范

    对CSRF的理解: 假定a是一个银行网站, b是一个危险网站. 当用户在访问a, 并且session并未结束的情况下, 去访问b网站, b网站就可以通过隐藏的url或者是表单来伪造用户对a的get或者 ...

  8. SpringBoot的优缺点

    优点: 1.快速构建项目 2.对主流开发框架的无配置继承 3.项目可独立运行,无须外部依赖Servlet容器 4.提高运行时的应用监控 5.极大地提高了开发.部署效率 6.与云计算的天然集成 缺点: ...

  9. Visual Studio 2015 Preview 使用中问题一枚

    只要碰到IO读写,文件不存在之类的系统异常,就会崩溃一下给你看看.直接重新VS. 不该有的问题确实存在着???? 正常情况是这样的 直接崩溃时万万不行的!!!!

  10. npm常用指令小记

    查看本地指定包在npm远程服务器的版本信息 方式一: npm view <packageName> versions 方式二: npm info <packageName> 查 ...