代码改变世界

随笔分类 -  C/C++

C++的那些事:面向对象

2014-06-11 11:23 by ☆Ronny丶, 2109 阅读, 收藏, 编辑
摘要: 1 OOP概述面向对象基于三个基本概念:数据抽象、继承和动态绑定。通过使用数据抽象,我们可以将类的接口与实现分离;使用继承,可以定义相似的类型并对其相似关系建模;使用动态绑定,可以在一定程度上忽略相似类型的区别,而以统一的方式使用它们的对象。1.1 继承继承是派生类与基类之间的关系,它们共享了一些公... 阅读全文

Effective C++笔记:继承与面向对象设计

2014-05-29 11:23 by ☆Ronny丶, 1188 阅读, 收藏, 编辑
摘要: 关于OOP 博客地址:http://www.cnblogs.com/ronny 转载请注明出处! 1,继承可以是单一继承或多重继承,每一个继承连接可以是public、protected或private,也可以是virtual或non-virtual。 2,成员函数的各个选项:virtual或non-virtual或pure-virtual。 3,成员函数和其他语言特性的交互影响:缺... 阅读全文

Effective C++笔记:实现

2014-05-27 17:47 by ☆Ronny丶, 1147 阅读, 收藏, 编辑
摘要: 条款26:尽可能延后变量定义式的出现时间博客地址:http://www.cnblogs.com/ronny/ 转载请注明出处!有些对象,你可能过早的定义它,而在代码执行的过程中发生了导常,造成了开始定义的对象并没有被使用,而付出了构造成本来析构成本。所以我们应该在定义对象时,尽可能的延后,甚至直到非... 阅读全文

Effective C++笔记:设计与声明

2014-05-24 10:40 by ☆Ronny丶, 1112 阅读, 收藏, 编辑
摘要: 条款18:让接口容易被正确使用,不易被误用1,好的接口很容易被正确使用,不容易被误用。你应该在你的所有接口中努力达成这些性质。2,“促进正使用”的办法包括接口的一致性,以及与内置类型的行为兼容。3,“阻止误用”的办法包括建立新类型,限制类型上的操作,束缚对象值,以及消除客户的资源管理责任。4,sha... 阅读全文

Effective C++笔记:资源管理

2014-05-22 10:27 by ☆Ronny丶, 1290 阅读, 收藏, 编辑
摘要: 资源:动态分配的内存、文件描述器、互斥锁、图形界面中的字型与笔刷、数据库连接以及网络sockets等,无论哪一种资源,重要的是,当你不再使用它时,必须将它还给系统。条款13:以对象管理资源当我们向系统申请资源后,一定要记得释放,不然就容易发生内存泄漏。但是意识到这样一件事并不是很容易,比如我们是通过... 阅读全文

Effective C++笔记:构造/析构/赋值运算

2014-05-21 11:47 by ☆Ronny丶, 1305 阅读, 收藏, 编辑
摘要: 条款05:了解C++默默编写并调用哪些函数默认构造函数、拷贝构造函数、拷贝赋值函数、析构函数构成了一个类的脊梁,只有良好的处理这些函数的定义才能保证类的设计良好性。当我们没有人为的定义上面的几个函数时,编译器会给我们构造默认的。当成员变量里有const对象或引用类型时,编译器会不能合成默认的拷贝赋值... 阅读全文

Effecvtive C++笔记:让自己习惯C++

2014-05-20 11:09 by ☆Ronny丶, 2151 阅读, 收藏, 编辑
摘要: 条款01:视C++为一个语言联绑C++的四个语言层次:C:C++是以C为基础的。基本数据类型、语句、预处理器、数组、指针等统统来自C。Oject-Oriented C++:面向对象这一特性包含了:类,封装,继承,多态,虚函数等Template C++:C++的泛型编程能力。STL:一个标准的temp... 阅读全文

C++的那些事:类的拷贝控制

2014-05-18 12:24 by ☆Ronny丶, 2796 阅读, 收藏, 编辑
摘要: 1,什么是类的拷贝控制当我们定义一个类的时候,为了让我们定义的类类型像内置类型(char,int,double等)一样好用,我们通常需要考下面几件事:Q1:用这个类的对象去初始化另一个同类型的对象。Q2:将这个类的对象赋值给另一个同类型的对象。Q3:让这个类的对象有生命周期,比如局部对象在代码部结束... 阅读全文

C++的那些事:流与IO类

2014-05-09 16:37 by ☆Ronny丶, 4745 阅读, 收藏, 编辑
摘要: 1、流的概念"流"就是"流动",是物质从一处向另一处流动的过程,比如我们能感知到的水流。C++的流是指信息从外部输入设备(如键盘和磁盘)向计算机内部(即内存)输入和从内存向外部输出设备(如显示器和磁盘)输出的过程,这种输入输出过程被形象地比喻为"流"。为了实现信息的内外流动,C++系统定义了I/O类... 阅读全文

C++的那些事:函数全解析

2014-04-30 16:32 by ☆Ronny丶, 1833 阅读, 收藏, 编辑
摘要: 一、函数的结构函数在C++中可能出现在三种地方,一是函数的定义,它包括了如上图的结构;二是函数的声明,它与函数的定义相比,没有了函数体部分;三则是函数的调用。当然,不同的函数定义可以还会稍有不同,比如类的成员函数、内联函数等。这里我们主要讨论函数的调用时需要注意的一些问题。二、参数传递我们将函数定义... 阅读全文

C++的那些事:const用法面面观

2014-04-18 15:49 by ☆Ronny丶, 2397 阅读, 收藏, 编辑
摘要: 一、const是什么在 C/C++ 语言中,const关键字是一种修饰符。所谓“修饰符”,就是在编译器进行编译的过程中,给编译器一些“要求”或“提示”,但修饰符本身,并不产生任何实际代码。就 const 修饰符而言,它用来告诉编译器,被修饰的这些东西,具有“只读”的特点。在编译的过程中,一旦我们的代... 阅读全文

C++的那些事:你真的了解引用吗

2014-04-13 21:07 by ☆Ronny丶, 5135 阅读, 收藏, 编辑
摘要: 一、引用的本质是什么说到引用,一般C++的教材中都是这么定义的:1,引用就是一个对象的别名。2,引用不是值不占内存空间。3,引用必须在定义时赋值,将变量与引用绑定。那你有没有想过,上面的定义正确吗?编译器是如何解释引用的?这里先给出引用的本质定义,后面我们再进一步论证。1,引用实际是通过指针实现的。... 阅读全文

C++的那些事:表达式与语句

2014-04-11 17:29 by ☆Ronny丶, 1885 阅读, 收藏, 编辑
摘要: 表达式1,应该把函数调用当作是一种运算符,这种运算符对参与运算的对象没有数量限制。2,关于“左值(lvalue)”和“右值(rvalue)”可以做一个简单的归纳:当一个对象被用作右值的时候,用的是对象的值(内容);当对象被用作左值的时候,用的是对象的身份(在内存中的位置)。更具体的左值与右值的举例:C++ priemr 5ed P1213,运算符的优先级规定了运算对象的组合方式,但是没有说明运算对象按照什么顺序求值,在大多数的情况下,不会明确求值的顺序,比如对于下面的表达式:int i= f1() + f2();先调用f1还是先调用f2是未知的。因此,对于这种运算符来说避免多个运算对象共同修改 阅读全文

C++的那些事:数据与类型

2014-04-11 09:47 by ☆Ronny丶, 2161 阅读, 收藏, 编辑
摘要: 一、前言最近在看C++Primer第5版,先前已经看过第4版,但是发现第5版在整个知识布局与个别知识的讲解上跟第4版差别还是挺大的,尤其是新增了C++11的内容,正如孟岩老师在第5版前言中所讲:“现在能够以新的C++11风格开发实践的人是凤毛麟角,如果能够纯熟的运用C++11的新特征、新机制,那么就能够形成一种简洁优雅的C++编程风络,开发会变得更高效,更高质”。所以正好借助第5版来重新学习巩固C++的知识。《C++的那些事》这个系列,将会以知识碎片的形式记录我在学习过程中一些知识重点。二、关于C++的学习个人身为C++菜鸟,自然是没有任何经验之谈,这里摘录C++Primer5ED前言里一些个 阅读全文

C++的那些事:容器和泛型算法

2014-03-05 10:30 by ☆Ronny丶, 2151 阅读, 收藏, 编辑
摘要: 一、顺序容器1,标准库定义了3种类型的顺序容器:vector、list和deque。它们的差别主要在于访问元素的方式,以及添加或删除元素相关操作运算代价。标准库还提供了三种容器适配器:stack、queue和priority_queue。2,将一个容器复制给另一个容器时,类型必须匹配,包括容器类型和... 阅读全文

C语言:基本数据类型与程序结构控制

2012-04-03 13:12 by ☆Ronny丶, 1355 阅读, 收藏, 编辑
摘要: 1. C 语言的基本组成 1.1 C语言有什么 1)数据类型 C语言提供了很多数据类型,其中基本类型包括字符、具有多种长度的整型和浮点数等。另外还通过指针、数组、结构和联合派生的各种数据类型。 运算符与操作数构成了表达式。 任何表达式,包括函数调用表达式、赋值表达式,加句尾加分号后都成为了一个语句。 指针提供了与具体机器无关的地址算术运算。 2)流程控制:C语言提供了基本的控制流结构:语句块、条... 阅读全文