![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++程序设计
一个挺OK的程序猿
优秀的android攻城狮,从事移动客户端开发,致力于清新的架构,执着于优雅的代码。
展开
-
C++ 运算符重载
运算符重载l 运算符重载:C++能将运算符(+、-、*、/等)的定义扩展到运算分量是对象的情况,并且重载后运算符的运算顺序和优先级不变,这样使得C++代码更直观,更易读。l 示例Class A{ ……};A a,b,c,d;d=a+原创 2009-12-17 23:56:00 · 579 阅读 · 0 评论 -
如何理解c和c++ 的复杂类型声明
int main(int argc, char* argv[]) { /**//* ************************************************************ 指针 **************************************************************/原创 2009-12-30 17:20:00 · 626 阅读 · 0 评论 -
“指向const对象的指针” 和 “const指针”
const对象定义的时候必须初始化。“指向const对象的指针”定义的时候可以不初始化,因为指针本身不是const,可以让指针指到另一个对象。“const指针”定义的时候必须初始化,因为它是常量。 const double dvall = 3.15; const double *cpd; const double val1 = 3.15;原创 2009-12-30 17:21:00 · 593 阅读 · 0 评论 -
线性表--顺序储存结构
我意识到数据结构的重要性了,决定把把各种类型写一遍,熟练一下,我觉得对这些应该达到了如指掌的地步,才算可以... ////////线性表 顺序储存 ////////code by Apan #include using namespace std; ////////定义线性表原创 2009-12-30 17:22:00 · 761 阅读 · 0 评论 -
C++标准编程:虚函数与内联
我们曾经在讨论C++的时候,经常会问到:“虚函数能被声明为内联吗?”现在,我们几乎听不到这个问题了。现在听到的是:“你不应该使print成为内联的。声明一个虚函数为内联是错误的!” 这种说法的两个主要的原因是(1)虚函数是在运行期决议而内联是一个编译期动作,所以,我们将虚函数声明为内联并得不到什么效果;(2)声明一个虚函数为内联导致了函数的多分拷贝,而且我们为一个不应该在任何时原创 2009-12-30 17:24:00 · 751 阅读 · 0 评论 -
C++ 中友元的一些总结
1,friend申明一个友元friend一般为一句申明式,它位于一个类的内部,它申明一个类或者一个函数为该类的友元。friend并不是定义一个成员函数,所以friend放在public,protected或者private前都可以,完全是一样的。做为一个友元,即表示在该类或者该函数内部可以访问这个类的私有成员,你和朋友之间是不是应该没有什么隐藏的呢。例子:class A原创 2009-12-29 17:35:00 · 510 阅读 · 0 评论 -
C++ 深入学习C语言知识点checklist——测试你掌握C的程度
字符串 学习时间:1.5W(“W”周,下同) 知识点checklist strlen()函数的返回值是什么类型的? 字符串strlen()的值,是否和他占据的内存空间相同? 你是否知道strcpy函数存在的潜在风险?如何避免? 如果一个字符串没有字符串结束符,而调用str开头的库函数,会发生什么? Strcpy(),strcat(),strcmp(),原创 2009-12-29 18:13:00 · 1349 阅读 · 0 评论 -
C/C++中的结构体(struct)
什么是结构体?简单的来说,结构体就是一个可以包含不同数据类型的一个结构,它是一种可以自己定义的数据类型,它的特点和数组主要有两点不同,首先结构体可以在一个结构中声明不同的数据类型,第二相同结构的结构体变量是可以相互赋值的,而数组是做不到的,因为数组是单一数据类型的数据集合,它本身不是数据类型(而结构体是),数组名称是常量指针,所以不可以做为左值进行运算,所以数组之间就不能通过数原创 2009-12-29 20:51:00 · 548 阅读 · 0 评论 -
C++中创建持久对象的方法
持久对象(persistentobjects)广泛应用于游戏、分布式数据库系统、多媒体以及图形应用程序中。目前C++并不直接支持持久性(persistence)(但有一些在C++未来版本中添加持久性和反射(reflection)的建议)。持久对象可以在创建它的程序的作用域之外保持自身状态。把对象写入一个文件并在以后重建之,或者把对象传送到一台远程机器,就是这样的例子。对持久性的支持并不原创 2009-12-29 20:53:00 · 501 阅读 · 0 评论 -
C++中使用调试器逐步跟踪程序
在VC++6.0中的单步调试: 调试重要的几个键: F9在当前光标所在的行下断点,如果当前行已经有断点,则取消断点。 F5调试状态运行程序,程序执行到有断点的地方会停下来。 F10单步执行程序。 CTRL+F10运行到光标所在行。 F11和F10的区别是,如果当前执行语句是函数调用,则会进入函数里面。原创 2009-12-29 20:54:00 · 879 阅读 · 0 评论 -
C和C++的学习历程
一家之言,欢迎拍砖哈。 1、可以考虑先学习C. 大多数时候,我们学习语言的目的,不是为了成为一个语言专家,而是希望成为一个解决问题的专家。做一个有用的程序员,做一个赚钱的程序员。我们的价值,将体现在客户价值上,而不是语言写得好不好看。 C++是C的一个面向对象的解释,C++为C扩充了大规模工程应用,复杂的系统结构的组织和掌控方法,但是,我原创 2009-12-29 20:54:00 · 569 阅读 · 0 评论 -
C++动态创建二维数组
方法1:用一维数组代替二维数组int n,m;cin>>n>>m;int* a = new int[n*m];for(int i = 0 ; i{coutfor(int j = 0 ; j{a[i*m+j] = i+j;cout}}coutdelete[] a;运行结果:0 00491BB0 1 00491BB4原创 2009-12-29 20:55:00 · 522 阅读 · 0 评论 -
C++直接操纵虚函数表方法
以下代码没有什么实用价值,最多拿来加深一下对虚函数表的印象,一时性起,想直接操纵虚函数表。这段代码只尝试了在VS2005上编译通过,没有在其他编译器上尝试,它并不具有可移植性。 大家都知道C++的虚函数机制通常是通过一个虚函数表来实现的,C++不对内存访问做限制,所以我们可以通过指针自己访问虚函数表,然后进行操作。 #include using namespace原创 2009-12-29 21:37:00 · 519 阅读 · 0 评论 -
C++ 运算符优先级列表
Precedence Operator Description Example Associativity 1()[]->.::++--Grouping operatorArray accessMember access from a pointerMember access from an ob原创 2009-12-29 20:56:00 · 395 阅读 · 0 评论 -
C++ using namespace std
所谓namespace,是指标识符的各种可见范围。C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。 一 : 和是不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码是不一样的。 后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定义原创 2009-12-30 17:19:00 · 558 阅读 · 0 评论 -
c++ 中头文件重复定义的问题
一、同一头文件中类嵌套的疑问 假设我们有两个类A和B,分别定义在各自的头文件A.h和B.h中,但是在A中要用到B,B中也要用到A,像下面的写法是错误的: class B; class A { public: B b; }; class B {原创 2009-12-30 17:18:00 · 1199 阅读 · 0 评论 -
C++ 对象与指针
对象与指针Class A{ public: void fun(){……}int y; privated: int x;};1, 对象引用成员A a;a.fun();a.y=0;a.x=0;2,原创 2009-12-16 17:24:00 · 568 阅读 · 0 评论 -
C++--多态
多态l 多态:当子类和基类存在同形函数(返回值相同,函数名相同,形参相同),此时若将基类对象作为函数形参则会存在调用混淆(无论传递的实参是子类对象还是基类对象都会只调用基类的成员函数),为了解决这种问题C++引入了多态,多态就是让程序能在运行时能自动根据实参类型自动确认调用哪个函数的能力。l 示例class A{原创 2009-12-17 23:49:00 · 544 阅读 · 0 评论 -
C++ 继承
继承l 继承规则:若逻辑上B是A的“一种”,并且A的所有功能和属性对B而言都有意义,则允许B继承A的功能和属性。l 示例Class person{Public:void fun();private:tring sex;int old原创 2009-12-17 23:54:00 · 567 阅读 · 0 评论 -
C++ 代码优化
谈到优化,很多人都会直接想到汇编。难道优化只能在汇编层次吗?当然不是,C++层次一样可以作代码优化,其中有些常常是意想不到的。在C++层次进行优化,比在汇编层次优化具有更好的移植性,应该是优化中的首选做法。 确定浮点型变量和表达式是 float 型 为了让编译器产生更好的代码(比如说产生3DNow! 或SSE指令的代码),必须确定浮点型变量和表达式是 float原创 2009-12-30 17:01:00 · 591 阅读 · 0 评论 -
C++:七种qsort排序方法
一、对int类型数组排序 C/C++ codeint num[100];Sample:int cmp ( const void *a , const void *b ){return *(int *)a - *(int *)b;}qsort(num,100,sizeof(num[0]),cmp); 二、对char类型数组排序(同int类原创 2009-12-30 17:02:00 · 1077 阅读 · 2 评论 -
C++类成员函数的重载、覆盖与隐藏
1. 重载、覆盖与隐藏 1).重载:成员函数具有以下的特征时发生"重载" A.相同的范围(同一个类中) B.函数的名字相同 C.参数类型不同(不能进行隐式类型转换) D.Virtual关键字可有可无 2).覆盖(也叫"继承"):指派生类函数覆盖基类函数,特征是:原创 2009-12-30 17:09:00 · 634 阅读 · 0 评论 -
加入代码以检查C++中的内存泄漏
内存泄漏是编程中常常见到的一个问题,我所遇过的原因有两个:1.分配完内存后忘记回收 2.代码有问题,造成想回收却无法回收,例如: int* p=new int; p=new int; //p指针修改,原来申请内存的地址没有记录下来,于是无法释放 下面介绍如何检查内存泄漏: 1.包含头文件和定义 #define _CRTDBG_M原创 2009-12-30 17:10:00 · 624 阅读 · 0 评论 -
C++构造函数的幕后工作
写一个简单的类: class CParentA { public: CParentA() {} public: int parenta_a; int parenta_b; public: virtual void parenta_f1() {this->parenta_a = 0x10;} virtual void parenta_f原创 2009-12-30 17:12:00 · 644 阅读 · 0 评论 -
C++中const与static在面向过程代码中的异同
const与static都有静态的含义,当声明一个变量在其前加写const或static,它会将值一直保持下去。 但const实际实际上声明了一个完全静态的常量,除了在声明时可以给它赋值一次,在之后的任何代码中都不能再对它进行赋值。所以在声明const常量时,必须对其赋值,否则这个常量将没有任何意义。当然,const是左结合的,所以在用到指针时,要注意它只使得右侧紧挨着的量成为原创 2009-12-30 17:13:00 · 580 阅读 · 0 评论 -
C++容器:顺序容器,关联容器
容器主要分为顺序容器和关联容器。 一,顺序容器 vector--连续存储的元素,单向的 list----由节点组成的不连续存储的双向鏈表 deque--连续存储的元素,双向的 1,顺序容器主要分为vector, deque, list。 2,容器内的元素类型必须至少满原创 2009-12-30 17:14:00 · 831 阅读 · 0 评论 -
C++模版全掌握(实例)
下面列出了模版的常用情况: //1. 模板类静态成员 template typename T> struct testClass { static int _data; }; template int test原创 2009-12-30 17:15:00 · 797 阅读 · 0 评论 -
C/C++ qsort()快速排序的用法
C语言中排序的算法有很多种,系统也提供了一个函数qsort()可以实现快速排序。原型如下:void qsort(void *base, size_t nmem, size_t size, int (*comp)(const void *, const void *));它根据comp所指向的函数所提供的顺序对base所指向的数组进行排序,nmem为参加排序的元素个数,size为每个原创 2009-12-30 17:16:00 · 690 阅读 · 0 评论 -
C++ 中指针和引用的什么区别
指针与引用看上去完全不同(指针用操作符“*”和“->”,引用使用操作符“. ”),但是它们似乎有相同的功能。指针与引用都是让你间接引用其他对象。你如何决定在什么时候使用指针,在什么时候使用引用呢? 首先,要认识到在任何情况下都不能使用指向空值的引用。一个引用必须总是指向某些对象。因此如果你使用一个变量并让它指向一个对象,但是该变量在某些时候也可能不指向任何对象,这时你应该把变量原创 2009-12-30 17:17:00 · 513 阅读 · 0 评论 -
C++动态建立矩阵及矩阵相乘
#include #include int ** create(int m,int n){ int i,j; int **p = new int*[m]; cout for(i=0;i { p[i] =new int[n]; for(j=0;j {原创 2009-12-29 21:37:00 · 2725 阅读 · 0 评论