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. js 监听浏览器刷新还是关闭事件

    转载大神 http://www.cnblogs.com/gavin0517/p/5827405.html

  2. Appium+Python入门学习总结

    最近研究了一下Appium,查看了一些大神的博客,绕过了一些坑,现将从搭建环境到运行真机测试的流程总结如下: 一.搭建环境,这里我参考了虫师的博客,一步一步来,搭好了Appium的环境,如果需要真机测 ...

  3. POJ 2361 Tic Tac Toe

    题目:给定一个3*3的矩阵,是一个井字过三关游戏.开始为X先走,问你这个是不是一个合法的游戏.也就是,现在这种情况,能不能出现.如果有人赢了,那应该立即停止.那么可以知道X的步数和O的步数应该满足x= ...

  4. leetcode--Learn one iterative inorder traversal, apply it to multiple tree questions (Java Solution)

    will show you all how to tackle various tree questions using iterative inorder traversal. First one ...

  5. Java面向对象_常用类库api——二分查找算法

    概念:又称为折半查找,优点是比较次数少,查找速度快,平均性能好:缺点是要求待查表为有序表,且插入删除困难.因此,折半查找方法适用于不经常变动而查找频繁的有序列表. 例: public class Bi ...

  6. Linux Shell命令系列(4)

    16. cat命令 “cat”代表了连结(Concatenation),连接两个或者更多文本文件或者以标准输出形式打印文件的内容. 17. cp 命令 “copy”就是复制.它会从一个地方复制一个文件 ...

  7. 面试大全之JVM篇

    JVM 内存模型以及分区,需要详细到每个区放什么. JVM 分为堆区和栈区,还有方法区,初始化的对象放在堆里面,引用放在栈里面,class类信息常量池(static常量和static变量)等放在方法区 ...

  8. Oracle权限管理

    一)用户Oracle中的用户分为二大类1)Oracle数据库服务器创建时,由系统自动创建的用户,叫系统用户,如sys.2)利用系统用户创建的用户,叫普通用户,如scott,hr,c##tiger,zh ...

  9. springboot mybatis 自动生成代码(maven+IntelliJ IDEA)

    1.在pom文件中加入需要的依赖(mybatis-generator-core) 和 插件(mybatis-generator-maven-plugin) <dependency> < ...

  10. java8Stream map和flatmap的区别

    map和flatmap的区别 map只是一维 1对1 的映射 而flatmap可以将一个2维的集合映射成一个一维,相当于他映射的深度比map深了一层 , 所以名称上就把map加了个flat 叫flat ...