初学c++
文章平均质量分 78
-BearWolf
成长
展开
-
程序设计的一些基本问题
在程序设计中,常用下列三种不同的出错处理方式:(1)用exit语句终止执行并报告错误;(2)以函数的返回值区别正确返回或错误返回;(3)设置一个整型变量的函数参数以区别正确返回或某种错误返回;各自的优缺点: (1)exit常用于异常错误处理,它可以强行中断程序的执行,返回操作系统。 (2)以函数的返回值判断正确与否常用于子程序的测试,便于实现程序的局部控制。原创 2013-11-16 15:58:12 · 1511 阅读 · 0 评论 -
继承
面向对象中的继承指类之间的父子关系;子类拥有父类的所有成员变量和成员函数;子类就是一种特殊的父类;子类对象可以当作父类对象使用;子类可以拥有父类没有的方法和属性;class Parent{private: int a;public: Parent() { a = 1000; } vo原创 2014-02-10 05:30:05 · 537 阅读 · 0 评论 -
经典问题总结(三)
不要将多态应用于数组: 指针运算是通过指针的类型进行的; 多态通过虚函数表实现的;不要在数组上使用多态!!原创 2014-02-12 13:39:16 · 663 阅读 · 0 评论 -
多态与继承(上)
函数重写:在子类中定义与父类中原型相同的函数;函数重写只发生在父类与子类之间;class Parent//函数重写{public: void print() { cout }};class Child : public Parent{public: void print() {原创 2014-02-11 18:39:32 · 611 阅读 · 0 评论 -
函数模板
泛型编程的概念:不考虑具体数据类型的编程模式C++ 中泛型编程: 函数模板提供一种特殊的函数可用不同类型进行调用;看起来和普通函数很相似,区别是类型可被参数化;template//template告诉编译器开始泛型编程了,typename表示泛指类型声明void Swap(T& a, T& b){ T t = a; a = b;原创 2014-02-12 15:17:13 · 609 阅读 · 0 评论 -
继承与多态(下)
函数重载:必须在同一个类中进行子类无法重载父类的函数,父类同名函数将被覆盖重载是在编译期间根据参数类型和个数决定调用函数函数重写:必须发生于父类与子类之间并且父类与子类中的函数必须有完全相同的原型使用virtual声明之后能够产生多态多态是在运行期间根据具体对象的类型决定调用函数C++中多态的实现原理:当类中声明虚原创 2014-02-12 00:30:17 · 570 阅读 · 0 评论 -
经典问题总结(一)
const和引用的疑惑:#include int main(){ const int x = 1; const int& rx = x; int& nrx = const_cast(rx); nrx = 5; printf("x = %d\n", x); printf("rx = %d\n", rx); print原创 2014-02-18 18:09:11 · 679 阅读 · 0 评论 -
类中的封装
类通常分为以下两个部分:类的实现细节;类的使用方式;当使用类时,不需要关心其实现细节;当创建一个类时,才需要考虑其内部实现细节;封装的基本概念:根据日常生活中的经验:并不是类的每个属性都是对外公开的如:女孩子不希望外人知道自己的年龄和身高;如:一些男孩子不希望别人知道自己会尿床;而一些类的属性是对外公开的如:人类的原创 2014-02-18 18:33:32 · 1277 阅读 · 0 评论 -
构造与析构(上)
对象的初始化:生活中存在的对象都是被初始化后才上市的;初始状态是对象普遍存在的一个状态的;一般而言所有的对象都需要一个确定的初始状态解决方案为每个类都提供一个public的initialize函数;对象创建后立即调用initialize函数进行初始化;initialize只是一个普通的函数,必须显示的调用一旦由于失误的原因,对象没有初始化原创 2014-02-18 18:54:59 · 670 阅读 · 0 评论 -
构造与析构(下)
c++中的对象组合:C++中提供了初始化列表对成员变量进行初始化语法规则Constructor::Contructor():m1(v1), m2(v1,v2), m3(v3){ //some other assignment operation}注意:成员变量的初始化顺序与声明的顺序相关,与在初始化列表中的顺序无关;初始化列表先于构造函数的函数原创 2014-02-18 23:12:09 · 659 阅读 · 0 评论 -
类的静态成员
类的静态成员:在C++中可以定义静态成员变量和静态成员函数;静态成员属于整个类所有,不需要依赖任何对象;可以通过类名直接访问public静态成员;可以通过对象名访问public静态成员;静态成员函数可以直接访问静态成员变量;静态成员变量的定义在定义时直接通过static关键字修饰静态成员变量不依赖于任何对象,需要在类外单独分配空间语法规则:T原创 2014-02-18 23:32:59 · 649 阅读 · 0 评论 -
继承中的构造与析构
赋值兼容性原则:子类对象可以当作父类对象使用:子类对象可以直接赋值给父类对象;子类对象可以直接初始化父类对象;父类指针可以直接指向子类对象;父类引用可以直接引用子类对象;子类是就是特殊的父类!!!class Child : public Parent{protected: int i;public: Child(i原创 2014-02-10 06:55:53 · 589 阅读 · 0 评论 -
操作符的重载(上)
使用c++标准库:c++标准库并不是c++语言中的一部分;c++标准库是由c++语言编写而成的类库和函数的集合;c++标准库中的类和对象都位于std命名空间中;c++标准库都头文件都不带.h后缀;c++标准库涵盖了c标准库的功能; c库中对应c++库中c++标准库中定义了许多常用的数据结构,如字符串,链表,栈,队列等;#include //使用c++标准库原创 2014-02-07 22:42:08 · 720 阅读 · 0 评论 -
操作符的重载(下)
opreator+的成员函数实现:#include #include //操作符重载分成员函数重载和全局函数重载//当无法更改函数左操作数的类时,使用全局函数重载using namespace std;class Complex{ int a; int b;public: Complex(int a, int b) {原创 2014-02-08 13:41:19 · 714 阅读 · 0 评论 -
深入理解C/C++ [Deep C (and C++)]
作者:Rockics来源:http://blog.csdn.net/rockics/article/details/7015067说明:译自Deep C (and C++) by Olve Maudal and Jon Jagger,本身半桶水不到,如果哪位网友发现有错,留言指出吧:) 编程是困难的,正确的使用C/C++编程尤其困难。确实,不管是C还是C++,很难看到那转载 2013-11-16 21:53:07 · 1046 阅读 · 0 评论 -
线性表
数据结构(C语言实现)分类: C/C++ 2013-03-18 23:26 172人阅读 评论(0)收藏 举报1.线性表的顺序存储[cpp] view plaincopyprint?#include #include #define MAX 20 typedef int DataType ; typedef stru转载 2013-11-19 20:41:15 · 847 阅读 · 0 评论 -
之所以学习c++
unix操作系统诞生的时候是用汇编语言编写的。随着unix的发展,unix操作系统的开发效率成为一个瓶颈。这时候,便有了B语言的产生,而B语言不直接生成机器码,而是通过生成中间码后解释执行。而这时候问题出现了,解释性语言是不能够胜任操作系统的开发的。后来,科学家们总是有办法的,于是乎c语言便产生了。c语言的目标很明确,只是为了让执行效率变的更高。即使c语言在使用的过程中也逐渐完善起来,但是还是产生原创 2014-01-23 23:08:57 · 622 阅读 · 0 评论 -
c到c++的升级
c++继承了c的所有特性,c++在c的基础上同时增加了许多新的语法和特性,c++的目标是实现运行效率与开发效率相统一。 c++中更加强调语言的实用性,所有变量可在使用的时候再定义。例如;#include int main(int argc, char *argv[]){ int c = 0; printf("Begin...原创 2014-01-25 12:48:24 · 616 阅读 · 0 评论 -
c++中的引用
c++中的布尔类型:c++在c的基础上增加了bool类型,bool类型可取的值只有true和false,理论上bool变量只占用一个字节,而如果多个变量定义在一起,那么可能各个变量只占用一个字节,这取决于编译器的实现。true代表真值,在编译器内部用1来实现;false代表非真值,在编译器内部用0来实现。c++编译器会在赋值时自动将非0转换为true值,0值转换为false值。 三目运算原创 2014-01-28 15:16:21 · 697 阅读 · 0 评论 -
函数的升级(上)
c++中的const常量可以替代宏定义常数,那么c++中是否有解决方案来替代宏代码片段呢,因为宏代码片段毕竟是有副作用的,答案是肯定的。内联函数就可以实现这种操作。c++推荐使用内联函数代替宏片段,使用inline关键字声明内联函数。inline int func(int a, int b){ return a }内联函数声明时必须和函数定义结合在一起,否则编译器会自原创 2014-01-29 12:38:00 · 576 阅读 · 0 评论 -
函数的升级(下)
重载的概念:同一个标识符在不同的标识符有不同的含义。c++中的函数重载:用同一个函数名定义不同的函数;当函数名和不同的参数搭配时函数的意义不同;int func(int x){ return x;}int func(int a, int b){ return a + b;}int func(const char* s){ ret原创 2014-01-29 19:24:50 · 536 阅读 · 0 评论 -
C++源文件的后缀名问题
C++源文件的后缀名问题VC里用cpp作后缀名, 在GCC里默认采用C、cc、cxx作为后缀名.cpp, .h (VS file).cc, .h (GCC file) C中:头文件后缀名: .h源文件后缀名: .c C++中:头文件后缀名: .h, .hpp, .hxx 源文件后缀名:.cpp, .cc, .cxx转载 2014-01-20 21:58:49 · 718 阅读 · 0 评论 -
新的关键字
动态内存分配:c++中通过new关键字进行动态内存申请;c++中的动态内存申请基于类型进行的;delete关键字用于内存释放;c++中的动态内存分配:#include int main(){ int* p = new int; *p = 5; *p = *p + 10; printf("p = %p\n", p);原创 2014-02-07 23:21:49 · 562 阅读 · 0 评论 -
经典问题总结(二)
malloc与free和new与delete有什么区别?malloc和free是库函数,以字节为单位申请堆内存;new和delete是关键字,以类型为单位申请堆内存;malloc和free单纯的对内存进行申请与释放;对于基本类型new关键字会对内存进行初始化;对于类类型new和delete还负责构造函数和析构函数的调用;#include #include原创 2014-02-08 21:49:21 · 556 阅读 · 0 评论 -
C++中的long long和__int64类型
C语言中long long的用法 在C语言的C99标准扩展了新的整数类型 long long,long是32位宽,占4个字节,long long通常被定义成 64 位宽,也就可以实现了在32位机器上可以扩展8字节的数据,GUN C也支持,当然在64位平台上就存在这个问题了。C99标准并没有硬性规定具体到某种平台上的某种整数类型究竟占用多少字节、能够表示多大范围的数值等,只是给出一条原转载 2014-03-03 21:12:34 · 691 阅读 · 0 评论