C++
哈维先生
这个作者很懒,什么都没留下…
展开
-
C++动态分配内存
数组为了申请动态空间,我们需要使用new操作符。new操作会返回一个指针,它指向最新分配的空间的首地址。使用new表达式的时候,先分配内存,并在该内存中构造一个对象。原创 2013-08-23 19:09:30 · 633 阅读 · 0 评论 -
多重继承和虚继承
多重继承从概念上来看,多重继承很简单:派生类可以继承多个直接基类,派生类对象由派生部分和每个基类贡献的基类部分组成。虚继承在多重继承下,一个基类可以在派生层次中出现多次。虚继承可以解决这个问题。它是一种机制,类通过虚继承指出它希望共享其虚基类的状态。在虚继承下,对给定的虚基类,无论该类在派生层次中作为虚基类出现了多少次,只继承一个共享的基类子对象。共享的基类子对原创 2014-03-19 09:33:31 · 657 阅读 · 0 评论 -
虚函数与虚继承寻踪
顶多算得上对数据的简单封装,而C++的引入把struct“升级”为class,使得面向对象的概念更加强大。继承机制解决了对象复用的问题,然而多重继承又会产生成员冲突的问题,虚继承在我看来更像是一种“不得已”的解决方案。多态让对象具有了运行时特性,并且它是软件设计复用的本质,虚函数的出现为多态性质提供了实现手段。如果说C语言的struct相当于对数据成员简单的排列(可能有对齐问题),那么C++的转载 2014-03-19 09:44:07 · 521 阅读 · 0 评论 -
string类的构造函数和析构函数
Class MyString{ private: char * chr; public: MyString(const char * ch); MyString(const MyString &other); ~MyString();}MyString::MyString(const char原创 2014-03-18 09:56:02 · 793 阅读 · 0 评论 -
重载与覆盖
简述重载:是指允许存在多个同名函数,而这些函数的参数列表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。(1) 参数列表主要包括:参数的类型,参数的个数,参数的顺序。这三者只要有一个不同就叫做参数列表不同。(2) 重载关系不只是能发生在一个类中。一个子类所拥有的成员除了自己显式写出来的以外,还有父类遗传下来的。所以子类中的某个方法和父类中继承下来的方法也可以发生原创 2014-03-09 11:30:22 · 721 阅读 · 0 评论 -
STL之Vector
Vector原创 2014-03-17 11:11:39 · 112 阅读 · 0 评论 -
虚析构函数
当派生类的对象从内存中撤销时一般先调用派生类的析构函数,然后再调用基类的析构函数。如果用new运算符建立了临时对象,若基类中有析构函数,并且定义了一个指向该基类的指针变量。在程序用带指针参数的delete运算符撤销对象时,会发生一个情况:系统会只执行基类的析构函数,而不执行派生类的析构函数。析构函数也可以是虚的,甚至是纯虚的。例如:class A{ public:原创 2014-03-09 12:42:48 · 834 阅读 · 0 评论 -
引用与指针
简介引用就是某个目标变量的“别名”(alias),对应用的操作与对变量直接操作效果完全相同。引用的声明方法:类型标识符 &引用名=目标变量名。int a; int &ra=a; //定义引用ra,它是变量a的引用,即别名。 说明:(1)&在此不是求地址运算,而是起标识作用。(2)类型标识符是指目标变量的类型。 (3)声明引用时,必须同时对其进行初始化原创 2014-03-09 12:42:07 · 653 阅读 · 0 评论 -
C++赋值运算符函数
CMyString::CMyString &(const CMyString &str){ if( this == &str) { return *this; } delete []m_pData; m_pDate = new char[len(str->m_pDate)+1]; strcpy(m_pDate,str原创 2014-02-20 20:54:47 · 792 阅读 · 0 评论 -
C++的参数
C支持可变参数的函数,这里的意思是C支持函数带有可变数量的参数,最常见的例子就是我们十分熟悉的printf()系列函数。我们还知道在函数调用时参数是自右向左压栈的。如果可变参数函数的一般形式是:f(p1, p2, p3, …),那么参数进栈(以及出栈)的顺序是: push p3 push p2 pushp1 call f pop p1 pop p2 pop p3如原创 2014-03-10 23:22:25 · 464 阅读 · 0 评论 -
C++内存分配
分配方式详解栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。在一个进程中,位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数的调用。堆,就是那些由 new 分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个 new 就要对应一个 delete。如果程序员没有释放掉,那么在程序结束后,操作系统原创 2014-03-10 21:31:09 · 159 阅读 · 0 评论 -
C++重载与覆盖
重载成员函数被重载的特征:(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual 关键字可有可无。覆盖覆盖是指派生类函数覆盖基类函数,特征是:(1)不同的范围(分别位于派生类与基类);(2)函数名字相同;(3)参数相同;(4)基类函数必须有virtual 关键字。实例#i原创 2014-01-03 00:27:29 · 205 阅读 · 0 评论 -
strcpy与memcpy的区别
strcpy和memcpy都是标准C库函数,它们有下面的特点。strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。已知strcpy函数的原型是:char* strcpy(char* dest, const char* src);memcpy提供了一般内存的复制。即memcpy对于需要复制的内容没有限制,因此用途更广。转载 2014-03-17 11:29:06 · 476 阅读 · 0 评论