C++总结

函数

class CMaxUserlevel
{
public:
   CMaxuserLevel();//构造函数
   virtual ~CMaxUserlevel();//析构函数
   CMaxUserLevel(const CMaxUserlevel &src);//拷贝函数
   CMaxuserLevel &operator = (const CMaxUserLevel &src);//赋值函数
}
为什么基类的析构函数用虚函数

在实现多态时,当用基类操作派用类,在析构时防止只析构基类而不析构派生类的状况发生。
析构函数与构造函数相反,当对象结束其生命周期时(例如对象所在函数已被调用完毕),系统自动执行析构函数。析构函数往往做"清理工作"(在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中delete函数)

C++
  包含构造函数和析构函数的C++程序

#include <string.h>
#include <iostream>

using namespace std;
class stud//声明一个类
{
   private ://私有部分
       int num;
       char name[10];
       char sex;
    public://共有部分
        stud(int n,const char nam[],char s)//构造函数
        {
              num = n;
              strcpy(name, nam);
              sex = s;
         }
         ~stud()//析构函数
         {
                cout<<"stud has been destructed!"<<endl;//通过输出提示来告诉我们析构函数确实被调用了
          }
     void display()//成员函数,输出对象的数据
     {
            cout<<"num:"<<num<<endl;
            cout<<"name:"<<name<<endl;
            cout<<"sex:"<<sex<<endl;
      }
};
ER

连接服务器

GS

处理跟场景有关,应该属于客户端场景逻辑在服务器的处理过程。话说为了防止外挂 才把客户端逻辑放到服务器去处理。

16.12.14

//客户端向服务器发送数据(后面跟发送数据参数)
BOOL OPT_ClientCommand(CERPlayer *pPlayer,int nID,int *pnParams,int nMax,LPCTSTR str)
{
}
//测试断言
ASSERT(g_pScnSvr != NULL);
//计算字符串 段数
int nose = GetSegmentCount(szParm);//计算命令字符串段数
//头文件宏定义:防止头文件被重复引用
#ifndef GRAPHICS_H     // 防止graphics.h被重复引用 
#define GRAPHICS_H 

#include <math.h>      //引用标准库的头文件 
#include “header.h”    // 引用非标准库的头文件 

void Function1(…); // 全局函数声明 
class Box // 类结构声明 
{ 
… 
}; 
#endif

那么问题来了ifdef endif到底是干啥的

在C/C++语言中,意思是说如果你定义了某个东西,则执行一段代码,这段代码是包含在ifdefendif之间的。比如debug一个程序,但是到最后你需要将debug的代码的删除,很多则麻烦。但是如果你那些debug的测试都是包含在ifdef和endif中的,便只需要将DEBUG注释掉就行了。

一、关键字:#ifndef,#define,#endif可以防止头文件被重复引用

结构是这样的:
如a.h头文件

#ifndef XX
#define XX

// 函数声明

#endif

第一次include这个头文件的时候由于XX还没有被define,所以满足#ifndef XX这个判断
那么执行它下面的内容 #define XX和他下面的函数声明;
如果由于编码者的不小心或者嵌套包含造成了这个头文件被多次引用;那么当编译到第二次#inlude的地方的时候由于不满足 #ifndef XX这个判断条件所以不执行后面的内容(#define XX和函数声明都不走)直接跳到#endif因此可以很好的防止头文件被重复引用

二、#include文件的一个不利之处在于一个头文件可能会被多次包含,为了说明这种错误,考虑下面的代码:

#include "x.h"
#include "x.h"

显然,这里文件x.h被包含了两次,没有人会故意编写这样的代码。但是下面的代码:

#include "a.h"
#include "b.h"

看上去没什么问题。如果a.h和b.h都包含了一个头文件x.h。那么x.h在此也同样被包含了两次,只不过它的形式不是那么明显而已。

多重包含在绝大多数情况下出现在大型程序中,它往往需要使用很多头文件,因此要发现重复包含并不容易。要解决这个问题,我们可以使用条件编译。如果所有的头文件都像下面这样编写:

#ifndef _HEADERNAME_H
#define _HEADERNAME_H
...
#endif

那么多重包含的危险就被消除了。当头文件第一次被包含时,它被正常处理,符号_HEADERNAME_H被定义为1。如果头文件被再次包含,通过条件编译,它的内容被忽略。符号_HEADERNAME_H按照被包含头文件的文件名进行取名,以避免由于其他头文件使用相同的符号而引起的冲突。

但是,你必须记住预处理器仍将整个头文件读入,即使这个头文件所有内容将被忽略。由于这种处理将减慢编译速度,所以如果可能,应该避免出现多重包含

strlen和sizeof的区别与联系

C/C++语言中:strlen指字符的长度,sizeof只文件或数据占的内存(字节)

1.
FH_ASSERT(Strlen(sap[1])<sizeof(sap[1]),"字符串越界!");
2.
int nCount = GetSegmentCount(szParam);

1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能容纳实现所有建立的最大对象的字节大小。
2.sizeof是算符,strlen是函数。
3.sizeof可以是类型做参数,strlen只能用char * 做参数,且必须是以"\0"结尾的。sizeof还可以用函数
4.数组作为参数传给函数时传的是指针而不是数组,传递的是数组的首地址
5.ASSERT函数:断言assert是一个宏,该宏在<assert> 中,当使用assert时候,给他个参数,即一个判读为真的表达式。预处理器产生测试该断言的代码,如果断言为真,则发出一个错误信息告诉断言是什么以及它失败一会,程序会终止的。
我们一般可用在判断某件操作是否成功上。
程序一般分为Debug版本和Release版本,Debug版本用于内部测试,Release版本发行给用户使用。如果assert的参数为假,那么程序就会终止(一般地还会出现提示对话,说明在什么地方引发了assert)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容

  • 1 文件结构 每个C++/C程序通常分为两个文件。一个文件用于保存程序的声明(declaration),称为头文件...
    Mr希灵阅读 2,861评论 0 13
  • 1.面向对象的程序设计思想是什么? 答:把数据结构和对数据结构进行操作的方法封装形成一个个的对象。 2.什么是类?...
    少帅yangjie阅读 4,987评论 0 14
  • 终于煲完这本书了...这本书是一本写给由c转c++新手的入门书.它的亮点在于非常详细清晰地阐明c++中一些基础语法...
    doyoubi阅读 1,973评论 0 3
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,729评论 0 38
  • 金花奇迹阅读 223评论 0 0