C++
whh_tg
这个作者很懒,什么都没留下…
展开
-
C++ 异常处理
...原创 2012-12-26 10:31:16 · 890 阅读 · 1 评论 -
C++ 继承(四、多重继承)
多重继承概念:C++允许为一个派生类指定多个基类,这样的继承结构被称做多重继承。优缺点:1、多重继承的优点很明显:简单,清晰,更有利于复用。不会因为基类一个小小的改变而大张旗鼓去改代码。2、缺点:1>二义性 两个基类中有同名方法的时候,你不得不在子类的调用中指明此方法出自那个基类。这看起来有些麻烦,幸好在你迷糊的时候,编译器会提醒你。2>钻石继承:在最终子类原创 2012-12-27 14:13:54 · 1128 阅读 · 1 评论 -
C++ 操作符重载、友元、类型转换操作符、五种类型转换、函数操作符(一)
=====================================================================算数操作符:+-*/%关系操作符:>逻辑操作符:&& || !位操作符:&、|、~、^下标操作符:[]取地址操作符:&解引用操作符:*插入操作符:提取操作符:>>取内存大小操作符:sizeof()一、操作符与操作符函数原创 2012-12-24 19:23:51 · 1247 阅读 · 2 评论 -
C++ 操作符重载、友元、类型转换操作符、五种类型转换、函数操作符(二)
五、成员和友元当双目操作符的两个操作数不是同一类型时,往往需要把操作符函数定义为调用对象(左操作数)类型的成员,同时也是参数对象(右操作数)类型的友元。C++中提供三种友元关系的实现方式,友元函数、友元成员函数、友元类。先谈谈废话: C++ 程序的设计一切是为了运行效率1、我们已知道类具备封装和信息隐藏的特性。只有类的成员函数才能访问类的私有成员,程式中的其他函数是无法访问私有成员原创 2012-12-24 19:23:12 · 871 阅读 · 0 评论 -
C++ 拷贝构造和拷贝赋值运算符
第一部分:拷贝构造函数类类型的变量需要使用拷贝构造函数来完成整个复制过程拷贝构造函数的形式: A (const A &a) // A为类名对于一个类X, 如果一个构造函数的第一个参数是下列之一:a) X&b) const X&c) volatile X&d) const volatile X&且没有其他参数或其他参数都有默认值,那么这个函数是拷贝构造原创 2012-12-24 11:29:26 · 1903 阅读 · 0 评论 -
C++ 继承(三、子类的拷贝构造和拷贝赋值)
子类的拷贝构造函数和拷贝赋值运算符--------不考虑多重继承基本原则:子类一定要调用基类的相应函数要点:1、缺省拷贝构造和拷贝赋值在复制子类部分之前会先复制其基类部分2、如果自己提供拷贝构造和拷贝赋值,就需要手动地对基类部分进行拷贝构造和拷贝赋值,否则该部分将会以缺省方式被构造或不进行赋值.实例:/*子类的拷贝构造函数和拷贝赋值函数*/#include us原创 2012-12-27 13:19:52 · 2873 阅读 · 0 评论 -
C++ 继承(一、语法以及三种继承方式的要点)
一、语法 class 子类名: 继承方式1 基类名1,继承方式2 基类名2,...{ //子类定义; };二、继承的基本要点: 1> 一个子类对象在任何时候都可以作为一个基类类型的对象,而不必使用显式类型转换,前提是两者(子类及其基类)都是通过指针或引用操作; 2>在子类中可以直接使用基类的所有公有和保护成员,就像它们是在子类中声明的那样,但是基类的私有成员原创 2012-12-25 12:34:42 · 1352 阅读 · 0 评论 -
C++ sizeof 在类中的使用
说明:1、空类 总是返回 1 原因:类要创建对象,要预留空间;最小的内存单位为 1; (类的实例化就是在内存中分配一块地址,每个实例在内存中都有独一无二的地址)2、类 跟 struct一样 需要考虑对齐和补齐的问题 3、类中含有 static 成员 sizeof不计其大小 原因:因为static成员是分配在全局区为类的所有对象共享4、带virtua原创 2012-12-24 14:43:52 · 696 阅读 · 0 评论 -
C++泛型设计 - 模板规格(译)
C++泛型设计 - 模板规格(译)MSDN:C++关键字template可以用来声明一批参数化的类(模板类)或函数(模板函数)。一般使用格式如下:The template declaration specifies a set of parameterized classes or functions.template template-parameter-list > dec翻译 2012-12-20 23:17:19 · 547 阅读 · 0 评论 -
C++ 特性和接口实现原则
C++ 三大特点: 面向对象编程对于产出高质量,易维护的代码是非常有帮助的。面向对象编程的概念构建于三个基本特征之上:封装,继承,多态。在C++中,class是面向对象编程概念的核心和具体形式。class通过私有成员体现“封装”,通过直接继承或者组合体现“继承”,通过虚函数和动态绑定(dynamic binding)体现“多态”。重载也是一种多态,“编译期多态”!C++ 类设计原创 2013-01-26 00:24:12 · 1035 阅读 · 0 评论 -
C++ 智能指针
闲下来再 写一、原创 2012-12-30 11:36:18 · 478 阅读 · 0 评论 -
C++ 操作符重载、友元、类型转换操作符、五种类型转换、函数操作符(三)
七、类型转换操作符和自定义类型转换A a;B b (a);B b = a;B b = static_cast (a);1. 可以通过为目标类型提供具有类型转换功能的构造函数完成自定义类型转换,也可以通过为源类型提供类型转换操作符达到同样的目的。2. 通过使用explicit关键字可以强制通过构造函数完成的类型转换必须显式完成。3. 类型转换操作符函数operator原创 2012-12-24 19:22:18 · 945 阅读 · 0 评论 -
C++ 继承(二、子类的构造函数和析构函数)
要点详解:一、子类隐式调用基类的构造函数 说明: 如果子类的构造函数没有显式地调用基类的构造函数,那么系统就会调用基类的无参构造函数, 但是前提是基类必须有无参构造函数; 如果基类中没有无参构造函数编译将报错。(提示:没有匹配的函数) 实例: /*子类的构造*/#include using namespace std;原创 2012-12-27 11:29:30 · 1277 阅读 · 0 评论 -
C++ 模板使用详解
模板语法一、函数模板通用语法:template返回类型 函数模板名 (形参表) {...}特化语法:template返回类型 函数模板名 (形参表) {...}二、类模板通用语法:template class 类模板名 {...}; 声明和实现分开:template class 类模板名 {...};template返回类型 类模板名原创 2012-12-21 19:24:19 · 1195 阅读 · 0 评论 -
C++ 多态
说起多态,首先想起的肯定是虚函数 virtual先看看一个实例:/*多态*/#include using namespace std;class Shape{public: Shape(int x,int y):m_x(x),m_y(y){} void Draw(){ cout<<"("<<m_x<<","<<m_y<<")"<<end原创 2012-12-26 10:30:47 · 994 阅读 · 1 评论 -
C++ 临时对象处理
一、临时对象的产生二、临时对象的生命周期原创 2012-12-27 16:38:10 · 495 阅读 · 0 评论 -
C++ I/O流
...原创 2012-12-26 10:32:18 · 836 阅读 · 1 评论 -
c++ 构造函数不能声明为虚函数的原因及分析
构造函数不需要是虚函数,也不允许是虚函数,因为创建一个对象时我们总是要明确指定对象的类型,尽管我们可能通过基类的指针或引用去访问它但析构却不一定,我们往往通过基类的指针来销毁对象1. 从存储空间角度,虚函数对应一个指向vtable虚函数表的指针,这大家都知道,可是这个指向vtable的指针其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没转载 2014-03-21 17:01:57 · 1279 阅读 · 0 评论