
C++
文章平均质量分 75
sdausxc
这个作者很懒,什么都没留下…
展开
-
const使用注意事项 指针 引用,指针引用区别
const用法:char greeting[] = "Hellow";const char* p = greeting;//non-const pointer,const datachar const * p = greeting;//同上char* const p = greeting;//non-const data,const pointerconst char*原创 2016-06-25 17:28:33 · 545 阅读 · 0 评论 -
strcmp实现以及为什么要通过unsigned char转换
view plaincopy to clipboardprint?int strcmp(const char* str1,const char* str2){ assert(str1!=NULL&&str2!=NULL); while(*str1&&*str2&&*str1==*str2){ str1++; str2++;转载 2016-07-31 09:57:46 · 1664 阅读 · 0 评论 -
对象切割,指针和引用对多态的支持
对象切割:一般来说派生类分配的存储空间大于基类分配的存储空间,如果不通过指针和引用而是直接将派生类对象复制给基类对象就会造成切割。切割导致无法通过基类调用基类的成员函数。例子:class Bear : public ZooAnimal{}Bear b;ZooAnimal za = b; za.rotate();//调用ZooAnimal::rotate()直原创 2016-06-23 10:36:03 · 345 阅读 · 0 评论 -
EffectiveC++,实现(2)static_cast,dynamic_cast,const_static,reinterpret_cast
尽量少做转型动作-大量使用转型可能导致代码变慢并且不容易维护。C++设计规则之一就是保证“类型错误”绝不可能发生,因此在进行编码时不要轻易放弃不干净的编译,从而阻止在任何对象上执行的不安全的、无意义的操作。转型破坏了类型系统,可能会带来不必要的麻烦,首先列举转型语法。旧式转型(old-style casts):(T)expression;T(expression)--功能相同都原创 2016-06-04 21:15:02 · 437 阅读 · 0 评论 -
C++对象所占内存的大小
class占据内存的由三部分组成:1、非静态数据的总和大小静态变量都在全局数据区分配内存2、加上任何由于alignment的需求填补上的空间(可能存储于members之间,也可能存在于集合体边界)alignment就是将数值调整到某数的倍数,以使bus的“运输量”达到最高效率。3、加上为了支持virtural而由内部产生的任何额外负担。一个类中若有虚函数,(不论是自己的原创 2016-06-21 23:21:12 · 1043 阅读 · 0 评论 -
C++ 虚函数表解析
C++ 虚函数表解析 陈皓http://blog.youkuaiyun.com/haoel 前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,R转载 2016-06-22 09:53:19 · 217 阅读 · 0 评论 -
运算符重载(operator overloading)
运算符重载(operator overloading)只是一种语法上的方便,也就说他只是另一种函数的调用方式。在C++中,可以定义一个处理类的新运算符。这种定义很像一个普通函数的定义,只是函数的名字由关键字operator及其后紧跟的运算符组成。差别仅此而已。他像任何其他函数一样也是一个函数,当编译器遇到适当的模式时,就会调用这个函数。对于运算符重载首先它是一个有趣的工具。但是,它仅仅只是翻译 2016-05-28 21:40:49 · 3835 阅读 · 0 评论 -
EffectiveC++实现(1)
本文总结子EffectiveC++条款27.太快定义变量可能造成效率上的拖延---尽可能延后变量定义式的出现。这样做可增加程序的清晰度并改善程序效率。只要定义了一个带构造析构函数的变量,那么当函数的控制流到达这个变量的定义式时就要承受构造和析构成本。因此,为了更好的提高效率应尽量延迟变量的定义直到需要变量,因为定义变量过早可能会造成定义不使用变量,从而增大开销。string EP(co原创 2016-06-03 21:25:20 · 305 阅读 · 0 评论 -
显示接口-隐式接口-编译期多态-运行期多态
面向对象:class Widget{public:widget();virtural ~widget();virtural void normalize();}void doPeocessing(Widget& w){ if(w.size()>10 && w != NMD) { Widget temp(w); temp.norm原创 2016-06-19 15:56:13 · 324 阅读 · 0 评论 -
C++中的资源管理(智能指针)
C++中最重要, 也最令人头疼的事情之一就是资源管理。原则上,每次在堆区用关键字new申请一块内存,必须对应一个delete来释放它。对应一般的小程序,通过细心地写代码,很容易做到。但当程序变大、变复杂的时候,仅仅依靠谨慎的编写程序也是很难做到的。考虑以下几种情况:1. 用new申请资源与用delete释放资源之间的跨度比较大,很容易在做完中间一系列的任务后忘记最初曾申请过资源,导致未释放转载 2016-07-15 16:21:02 · 334 阅读 · 0 评论 -
动态运行时类型识别与显示转换(typeid(a);static_cast<type>(expression);dynamic_cast<type>(expression);const_cast<typ
Effective C++不建议使用类型转换,在之前文章的基础上本文重新对强制类型转换进行了整理。包括typeid(a);static_cast(expression);dynamic_cast(expression);const_cast(expression);reinterpret_cast(expression))1、typeid(a),返回指针或引用所指对象的实际类型 t原创 2016-07-12 09:06:40 · 896 阅读 · 0 评论 -
C++友元函数和友元类
C++中的友元函数和友元类今天在准备计算机等级考试的时候,被一系列的友元函数给搞混了,现在结合自己的理解和查阅的资料来总结下友元函数和友元类。百度百科上对友元函数是这样定义的:友元函数是指某些虽然不是类成员却能够访问类的所有成员的函数。。类授予它的友元特别的访问权。通常同一个开发者会出于技术和非技术的原因,控制类的友元和成员函数(否则当你想更新你的类时,还要征得其它转载 2016-07-11 10:01:16 · 381 阅读 · 0 评论 -
TCP连接的状态详解以及故障排查
1、TCP状态LISTENING:侦听来自远方的TCP端口的连接请求. 首先服务端需要打开一个socket进行监听,状态为LISTEN。 有提供某种服务才会处于LISTENING状态,TCP状态变化就是某个端口的状态变化,提供一个服务就打开一个端口,例如:提供www服务默认开的是80端口,提供ftp服务默认的端口为21,当提供的服务没有被连接时就处于LISTENING状态。FTP服务启动后转载 2016-08-30 16:30:21 · 648 阅读 · 0 评论