上一页 1 ··· 9 10 11 12 13 14 下一页
摘要: 1.包含编译模型(inclusion compilation model). 函数声明放在头文件中,定义放在源文件中。头文件尾包含源文件。据说会出现一个模板实例化多次从而导致编译时性能显著降低。//template.cpptemplate<typename T>void print(const T &v){ cout << "T = " << v <<endl;}//template.h#ifndef TEMPLATE_H#define TEMPLATE_H template<typename T>void 阅读全文
posted @ 2009-03-24 15:50 liyuxia713 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 构造函数不能定义为virtual,派生类对象的基类数据成员部分在初始化列表中用基类构造函数初始化;基类析构函数应定义为virtual,复制操作符一般定义为非virtual在基类构造函数和析构函数中,将派生类对象当作基类类型对象对待。(因为在这两个函数的运行过程中,对象不是一个完整的派生类类型)类的复制控制的三法则有个例外:定义(空)虚构够函数时可以不定义构造函数和赋值函数。文章来源:http://liyuxia-life.spaces.live.com/Blog/cns!DA1B364675ACF35!264.entry 幸运草 2009-03-23 19:09 发表评论 阅读全文
posted @ 2009-03-23 19:09 liyuxia713 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 派生类本身的成员和友元任何继承时都可以使用派生类到基类转换。对于后代类和用户代码:public继承时:后代类和用户代码都可以。protected继承时:后代类可以,用户代码不可以。private继承时:后代类和用户代码都不可以。文章来源:http://liyuxia-life.spaces.live.com/Blog/cns!DA1B364675ACF35!263.entry 幸运草 2009-03-22 20:22 发表评论 阅读全文
posted @ 2009-03-22 20:22 liyuxia713 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 1.派生类对基类private成员没有访问权限。2.派生类只能通过派生类对象访问其基类的protected成员,派生类对其基类类型对象的protected成员没有特殊访问权限。#include<iostream>using namespace std; class Base{public: Base():i(0),j(0){};protected: int i;private: int j;}; class Derived:public Base{ Derived():Base(){}; print(const Base &b, const Derived &d) 阅读全文
posted @ 2009-03-22 19:26 liyuxia713 阅读(363) 评论(0) 推荐(0) 编辑
摘要: Technorati 标签: 析构函数,内存泄漏,三法则任何时候编译器都会合成析构函数,并且合成的析构函数总会运行。撤销容器(标准库容器和内置数组)是按逆序进行的。内存泄漏(Memory leak):删除指向动态分配内存的指针失败,因而无法将该块内存返还给自由存储区,这样的删除动态分配内存失败称为内存泄漏。只有当删除指向类对象的指针时才会运行该对象的析构函数。如果不删除指针,则对象一直存在,导致内存泄漏。三法则(rule of three):如果类需要析构函数,则也需要赋值操作符和复制构造函数。文章来源:http://liyuxia-life.spaces.live.com/Blog/cns! 阅读全文
posted @ 2009-03-08 21:25 liyuxia713 阅读(184) 评论(0) 推荐(0) 编辑
摘要: Technorati 标签: 类初始化列表,默认构造函数,复制构造函数初始化列表:通常使用初始化是为了提高效率,它直接调用与实参匹配的构造函数。【因为一般在构造函数体内的复制也经过初始化-->计算赋值(此时会调用复制构造函数)两个阶段】;特别的有些时候只能用初始化列表,即不能赋值的参数,如:const或引用类型的成员,没有默认构造函数的类类型成员。初始化列表中变量的初始化顺序是先声明的先初始化.class cl1{ private: const int ci; int &ri;}; //ci,ri只能在初始化列表中进行初始化。默认构造函数:全部形参是默认实参的构造函数也是默认构造 阅读全文
posted @ 2009-03-08 21:00 liyuxia713 阅读(151) 评论(0) 推荐(0) 编辑
摘要: inline成员函数:声明或定义时指定为inline都可以。作用:在调用处直接在行内展开代码,以提高效率。类的inline成员函数定义在包含该类的头文件中。 类内部定义的函数均为inline函数。mutable数据成员:任何函数(包括类const成员函数)都可以修改mutable数据成员。explicit构造函数:声明时指定,定义时不允许重复指定为explicit。作用:防止在需要隐式转换的上下文中使用构造函数。friend成员:非类成员可以访问类的私有成员。需要特别注意友元声明和作用域。如果想将(其他类的)成员函数设为友元,必须先声明;而如果想将(其他)类或非成员函数设为友元,则不必预先声明 阅读全文
posted @ 2009-03-06 21:57 liyuxia713 阅读(101) 评论(0) 推荐(0) 编辑
摘要: queue priority_queue stack队列 堆 栈deque vector deque //默认相关联容器类型push_front 随机访问 无 //对关联容器的要求文章来源:http://liyuxia-life.spaces.live.com/Blog/cns!DA1B364675ACF35!251.entry 幸运草 2009-03-06 19:17 发表评论 阅读全文
posted @ 2009-03-06 19:17 liyuxia713 阅读(96) 评论(0) 推荐(0) 编辑
摘要: 感觉迭代器这部分函数的返回类型是没太弄明白的,以后用的时候得多注意点。1.插入:一般插入是在给定的迭代器位置前,这样是end迭代器也课正常编译。插入的元素类型必须与c的类型完全一样。 void c.push_back(t); void c.insert(p,b,e); void c.insert(p,n,t); iter c.insert(p,t);2.赋值:c1= c2 c.assign(b,e); c.assign(n,t) //允许不同的容器,不同的元素,只要元素类型兼容。3.访问:c.back(); c.front(); c[n]; c.at[n]; //这样的下标访问容易越界。后.. 阅读全文
posted @ 2009-03-06 19:11 liyuxia713 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 1. const变量:const type v; 必须定义时初始化,不能修改其值。备注:关于const变量的作用域要特别注意,它是局部的,而默认的C++变量是全局的。通过加extern限制可以令const对象可以在全局被访问。如代码:(顺便提一下static)file1.cpp type v1; const type v2; //now,v2 is a local variable. extern const type v3;//now,v3 is a global variable. must add 'extern'~. file2.cpp type v1; // erro 阅读全文
posted @ 2009-02-28 21:38 liyuxia713 阅读(149) 评论(0) 推荐(0) 编辑
上一页 1 ··· 9 10 11 12 13 14 下一页