C++总结

作者: YBshone | 来源:发表于2016-12-14 23:37 被阅读0次

函数

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)

相关文章

  • C++ 总结 (一、基础篇)

    C++ 总结 (一、基础篇) 官网 C++ 完全兼容C语言,但是有自己的语法特点,本文总结了C++的基础知识。记录...

  • C++

    排序算法总结 对十二种排序算法进行总结C++ 类内存分布 这里不妨说下 C++ 内存分布结构,我们来看看编译器是怎...

  • 嵌入式面试高频考点(建议收藏)

    本篇参考网上及自身的面试经验,总结一些高频考察的Linux C/C++知识点,方便后续查阅总结。 一、C/C++编...

  • C++基本知识点总结(网摘)

    C++基本知识点总结(网摘)

  • static关键字

    一直使用static,但没用总结过,时间一长概念总有点模糊,趁着这次机会总结一下。c++中:C++中static有...

  • 返璞归真:现代C++精要

    参考 这是 Back to the Basics: Essentials of Modern C++ 的视频总结。...

  • 五万字长文:C/C++ 面试知识总结(上)

    C/C++ 面试知识总结 这是一篇五万字的C/C++面试知识点总结,包括答案:这是上篇,下篇今天也推送了,需要的同...

  • C++中容易被忽略的基础知识

    const和define的区别C++中static关键字的总结C++中的构造函数及深拷贝浅拷贝c++基础之引用和指...

  • C++开始

    1.1 C++注解 1.2 控制流 1.3 类简介 1.4 总结: 本笔记基于C++ primer 第五版 ,由...

  • C语言字符串处理库函数大全

    C语言中最常用标准库函数C++ sizeof的使用总结C++ Builder cstdlib 标准库函数相关颜色的...

网友评论

      本文标题:C++总结

      本文链接:https://www.haomeiwen.com/subject/jqobmttx.html