当前位置: 首页 > news >正文

C++编程规范


C++代码风格与规范

/**/ /*
 * Copyright(c) 2008 by Microsoft Corporation
 * All right reserved.
 *
 * 文件名称: polymorphism.h
 * 文件标识: 
 * 描    述: 多态性演示
 *
 * 当前版本: 1.1
 * 作    者: James
 * 完成日期: 2/26/2008
 *
 * 取代版本: 1.0
 * 作    者: Kacy
 * 完成日期: 2/24/2008
 
*/


#ifndef _POLYMORPHISM_H_
#define _POLYMORPHISM_H_

const   int  MAX_LENGTH = 100 // 常量全用大写的字母,用下划线分割单词
int  g_howManyPeople;  // 不得已需要全局变量,加前缀g_,表示global
class  Shape;  // 类名用大写字母开头的单词组合而成,如class LeafNode, class Person
void  Draw(Shape  * aShape);  // 全局函数的名字应该使用"动词"或者"动宾词组",如DrawBox()

class  Shape
{
public:
    virtual 
void Draw(void)=0;
}
;
// 类之间的空行
class  Circle :  public  Shape
{
//采用以行为为中的类版式:将public类型的函数写在前面,而将private类型的数据写在后面
public:
    Circle() : m_radius(
0.0{}
    virtual 
void Draw(void); //函数名用大写字母开关的单词组合而成,如GetName(),Eat()
    double GetRadius(); //用正确的反义词组命名相反动作的函数,如GetAge()和SetAge()
    void SetRadius(double radius);  //参数用小写字母开头的单词组合而成,如(int drawMode)
private:
    
//类的数据成员加前缀_m,表示member
    double m_radius; //变量用小写字母开头的单词组合而成,如drawMode, newValue, oldValue
    static int m_s_numberOfCircle; //静态变量用s_开头表示static
}
;

class  Cube :  public  Shape
{
public:
    virtual 
void Draw(void);
}
;

class  Sphere :  public  Shape
{
public:
    virtual 
void Draw(void);
}
;

#endif

/**/ /*
 * Copyright(c) 2008 by Microsoft Corporation
 * All right reserved.
 *
 * 文件名称: polymorphism.cpp
 * 文件标识: 
 * 描    述: 多态性演示
 *
 * 当前版本: 1.1
 * 作    者: James
 * 完成日期: 2/26/2008
 *
 * 取代版本: 1.0
 * 作    者: Kacy
 * 完成日期: 2/24/2008
 
*/


#include 
< iostream >  
#include 
"p olymorphism.h "
using namespace std;

/**/ /*
 * 函数功能: 画圆
 * 输入参数: 空
 * 输出参数: 无
 * 返 回 值: 空
 
*/

void  Circle::Draw( void
{
    cout
<<"Draw a Circle!"<<endl;
}


double  Circle::GetRadius()
{
    
return m_radius;
}


void  Circle::SetRadius( double  radius)
{
    m_radius
=radius;
}

// 函数之间的空行
void  Cube::Draw( void )
{
    cout
<<"Draw a Cube!"<<endl;
}


void  Sphere::Draw( void )
{
    cout
<<"Draw a Sphere!"<<endl;
}


void  Draw(Shape  * aShape)
{
    aShape
->Draw();
}


void  main()
{
    Circle aCircle;
    Cube aCube;
    Sphere aSphere;
    
//函数内部的空行(加在逻辑上不太相关的语句之间)
    Draw(&aCircle); 
    Draw(
&aCube); 
    Draw(
&aSphere); 

    Circle anotherCircle; 
//变量的名字当使用"形容词+名词"
    double radius; //变量的名字当使用"名词"
    anotherCircle.SetRadius(2.33);
    radius
=anotherCircle.GetRadius();
    cout
<<radius<<endl;
}


int  width = 10 // 定义并初始化width
int  height = 10 // 定义并初始化height
int  depth = 10 // 定义并初始化depth

if (condition)
{
    
return x;
}

else
{
    
return y;
}

return  (condition  ?  x : y);

for (initialization; condition; update)
{
    
//program code
}

// 空行
while (condition)
{
    statement1;
    
//空行
    if(condition)
    
{
        
//program code
    }

    
else
    
{
        
//program code
    }

    
//空行
    statement2;
}
// end of while

void  Func( const   int   * x,  const   int   * y,  const   int   * z)
{
    
//program code
}

if ((very_longer_variable1  >=  very_longer_variable2)
   
&&  (very_longer_variable3  <=  very_longer_variable4)
   
&&  (very_longer_variable5  <=  very_longer_variable6)
{
    
//program code
}

HWND CreateWindow(LPCTSTR lpClassName,   //  registered class name
                  LPCTSTR lpWindowName,  //  window name
                  DWORD dwStyle,         //  window style
                   int  x,                 //  horizontal position of window
                   int  y,                 //  vertical position of window
                   int  nWidth,            //  window width
                   int  nHeight,           //  window height
                  HWND hWndParent,       //  handle to parent or owner window
                  HMENU hMenu,           //  menu handle or child identifier
                  HINSTANCE hInstance,   //  handle to application instance
                  LPVOID lpParam );      //  window-creation data

注:本文摘自林锐的<<高质量程序设计指南-C++/C语言>>

相关文章:

  • RedHat ip配不上
  • Silverlight2.0 将直接支持中文
  • Win32汇编学习笔记(二)
  • 重新回归
  • 企业信息化:Web2.0带来的启示
  • 综合布线图书大全
  • MVP峰会,园子里有谁要去西雅图的,进来给点意见(请dudu留首页)
  • 获得库每个表的记录数和容量,sp_msforeachtable是MS未公开的存储过程
  • 狂笑不止
  • 教你如何进入内网
  • C语言程序设计 C语言吧问题资料大全
  • JCreator 使用技巧-3
  • 励志格言17条
  • 企业***网的规划及组建
  • Struts2+Spring2+Hibernate3 web应用示例(四)
  • 分享一款快速APP功能测试工具
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • HTTP那些事
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • javascript从右向左截取指定位数字符的3种方法
  • Kibana配置logstash,报表一体化
  • mongodb--安装和初步使用教程
  • MySQL的数据类型
  • Netty 4.1 源代码学习:线程模型
  • Python 反序列化安全问题(二)
  • spring + angular 实现导出excel
  • spring security oauth2 password授权模式
  • Unix命令
  • Vue UI框架库开发介绍
  • Vue学习第二天
  • 简单数学运算程序(不定期更新)
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 浅谈Golang中select的用法
  • 算法-插入排序
  • 责任链模式的两种实现
  • 自制字幕遮挡器
  • 最近的计划
  • nb
  • ​你们这样子,耽误我的工作进度怎么办?
  • $refs 、$nextTic、动态组件、name的使用
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (小白学Java)Java简介和基本配置
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)visual stdio 书签功能介绍
  • .bashrc在哪里,alias妙用
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .NET 读取 JSON格式的数据
  • .net 中viewstate的原理和使用
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)
  • @Service注解让spring找到你的Service bean
  • []T 还是 []*T, 这是一个问题
  • [AIGC 大数据基础]hive浅谈
  • [boost]使用boost::function和boost::bind产生的down机一例