随笔分类 -  c++学习笔记

摘要:静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。它主要存放静态数据、全局数据和常量。注意:const常量在定义时必须初始化栈区:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放,栈区由系统自动分配。堆区:亦称动态内存分配。... 阅读全文
posted @ 2014-07-22 14:14 合唱团abc 阅读(276) 评论(0) 推荐(0)
摘要:http://www.mianwww.com/html/2013/10/19128.html http://blog.csdn.net/wdzxl198/article/details/9050751 http://www.cnblogs.com/fangyukuan/archive/2010/09 阅读全文
posted @ 2014-07-20 14:00 合唱团abc 阅读(408) 评论(0) 推荐(0)
摘要:http://blog.csdn.net/zhanghefu/article/details/5003407转自:http://blog.csdn.net/wdzxl198/article/details/9050587明确区分堆和栈void f() { int* p=new int[5]; }在栈... 阅读全文
posted @ 2014-07-20 13:58 合唱团abc 阅读(254) 评论(0) 推荐(0)
摘要:当存在继承关系时,派生类的作用域嵌套在其基类的作用域之内。一个对象、引用或指针的静态类型决定了该对象的哪些成员是可见的。即使静态类型与动态类型可能不一致,但我们使用哪些成员仍然是由静态类型决定的。基类指针(引用)即使指向派生类对象,仍然不能通过该指针(引用)来访问派生类中定义的成员,即使是publi... 阅读全文
posted @ 2014-07-19 14:18 合唱团abc 阅读(557) 评论(0) 推荐(0)
摘要:网上看到的关于C++函数的重载、覆盖和隐藏区别的回答,如下(其内容来源于C++面试宝典中一道题目):a.成员函数被重载的特征:(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual 关键字可有可无。b.覆盖是指派生类函数覆盖基类函数,特征是:(1)不同的范围(分别... 阅读全文
posted @ 2014-07-19 13:21 合唱团abc 阅读(209) 评论(0) 推荐(0)
摘要:http://blog.csdn.net/sunquana/article/details/9153213一、 fill和fill_n函数的应用: fill函数的作用是:将一个区间的元素都赋予val值。 函数参数:fill(first,last,val);//first为容器的首迭代器,last为... 阅读全文
posted @ 2014-07-19 09:02 合唱团abc 阅读(809) 评论(0) 推荐(0)
摘要:虚函数的一般实现模型:每一个class有一个virtual table,内含该class中的virtual function的地址,然后每个object有一个vptr,指向virtual table。 识别class是否支持多态,唯一恰当的方法是看它是否有virtual function,只要cla 阅读全文
posted @ 2014-07-17 13:41 合唱团abc 阅读(380) 评论(0) 推荐(0)
摘要:非静态成员函数c++的设计准则之一就是:非静态成员函数至少和一般的非成员函数有相同的效率。编译器内部已将member函数实体转换为对等的nonmember函数实体。转化步骤:1.改写函数原型以安插一个额外的参数到member function中,使class object可以调用该函数,该额外参数为... 阅读全文
posted @ 2014-07-16 14:21 合唱团abc 阅读(620) 评论(0) 推荐(0)
摘要:派生类的构造函数初始化列表将实参分别传递给每个直接基类,其中基类的构造顺序与派生列表中基类的出现顺序保持一致,而与派生类构造函数初始化列表中基类的顺序无关。类型转换与多个基类编译器不会在派生类向基类的几种转换中进行比较和选择,因为在它看来转换到任意一种基类都一样好,所以要避免二义性。void pri... 阅读全文
posted @ 2014-07-15 15:19 合唱团abc 阅读(349) 评论(0) 推荐(0)
摘要:1. const常量,如const int max = 100; 优点:const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查,而对后者只进行字符替换,没有类型安全检查,并且在字符替换时可能会产生意料不到的错误。2. const 修饰类的数据成员。 const数据成员只在某... 阅读全文
posted @ 2014-07-13 08:46 合唱团abc 阅读(247) 评论(0) 推荐(0)
摘要:我们可以定义拷贝操作,使类的行为看起来像一个值或者像一个指针,这取决于如何拷贝指针成员。 当我们拷贝一个像值的对象时,副本和原对象是完全独立的,改变副本不会对原对象有任何影响,反之亦然。标准库容器和string类的行为像一个值。 当我们拷贝一个行为像指针的类的对象时,副本和原对象使用相同的底层数据, 阅读全文
posted @ 2014-07-11 14:57 合唱团abc 阅读(291) 评论(0) 推荐(0)
摘要:受保护的成员(protected): 1.和私有成员类似,受保护的成员对于类的用户来说是不可访问的 2.和共有成员类似,受保护的成员对于派生类的成员和友元来说是可访问的 3.派生类的友元只能通过派生类对象来访问基类的受保护成员,不能通过基类对象来访问基类的受保护成员 派生访问说明符: 派生访问说明符 阅读全文
posted @ 2014-07-08 13:46 合唱团abc 阅读(350) 评论(0) 推荐(0)
摘要:单一继承中,base class 和derived class的对象都是从相同的地址开始,其间差异只在于derived class比较大,用以容纳自己的nonstatic members。若vptr放在class object的起始处,如果base class没有虚函数而derived class有... 阅读全文
posted @ 2014-07-07 13:50 合唱团abc 阅读(342) 评论(0) 推荐(0)
摘要:vs2013的结果是1,4,4,8 因为Y,Z继承自X,会有指针指向父类(虚继承)。该指针要么指向virtual base class subobject,要么指向一个相关表格,表格中存放的是virtual base class subobject的地址或偏移量(一般当当前class有多个直接vir 阅读全文
posted @ 2014-07-05 10:37 合唱团abc 阅读(288) 评论(0) 推荐(0)
摘要:Linux进程的五个段 BSS段:BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。 数据段:数据段(data segment)通常是指用来存放程序中已初始化的全局变量 阅读全文
posted @ 2014-07-04 11:04 合唱团abc 阅读(586) 评论(0) 推荐(1)
摘要:一、动态绑定什么时候发生 当且仅当通过指针或引用调用虚函数时,才会在运行时解析该调用 二、派生类中的虚函数 当我们在派生类中覆盖了某个虚函数时,可以再一次使用virtual指出该函数的性质,但是这么做并非必须,因为一旦某个函数被声明成虚函数,则在所有派生类中它都是虚函数。 一个派生类的函数如果覆盖了 阅读全文
posted @ 2014-07-03 16:26 合唱团abc 阅读(683) 评论(0) 推荐(0)
摘要:面向对象程序设计的核心思想是数据抽象(类的接口与实现分离)、继承和动态绑定 基类 虚函数:基类希望派生类各自定义适合自身的版本的函数 在c++中,当我们使用基类的引用或指针调用虚函数时将发生动态绑定。 基类通常都应该定义一个虚析构函数。C++规定:用不带有虚析构函数的基类的指针来删除一个派生类对象( 阅读全文
posted @ 2014-07-03 15:46 合唱团abc 阅读(366) 评论(0) 推荐(1)
摘要:拷贝控制操作:拷贝构造函数 拷贝赋值运算符 移动构造函数 移动赋值运算符 析构函数 如果一个类没有定义所有这些拷贝控制成员,编译器会自动为它定义缺失的操作。 一、拷贝构造函数 定义:一个构造函数的第一个参数是自身类类型的引用,且任何额外参数都有默认值(拷贝构造函数第一个参数必须是引用类型,而且一般是 阅读全文
posted @ 2013-07-02 11:11 合唱团abc 阅读(299) 评论(0) 推荐(0)