c++ 小知识总结 .xml
pre{
line-height:1;
color:#800080;
background-color:#d2c39b;
font-size:16px;}.sysFunc{color:#627cf6;font-style:italic;font-weight:bold;}
.selfFuc{color:#800080;}
.bool{color:#d2576f;}
.condition{color:#000080;font-weight:bold;}
.key{color:#000080;}
.var{color:#800000;font-style:italic;}
.Digit{color:#ff00ff;font-weight:bold;}
.includePre{color:#800080;}
.operator {color:#008000;font-weight:bold;}
1 设置随机数
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int a[50];
srand((unsigned)time(NULL));
for (int i=0;i<50;i++)
{
a[i]=rand()%100;
}
或
#include "time.h"
srand( (unsigned)time( NULL ) );
int i=rand()%5;
2 静态函数
在AllResult.h中进行声明
如:
#include "stdafx.h"
#include <iomanip>
#include <iostream>
#include <Windows.h>
//#include <vector>
using namespace std;
static BOOL EightQueen();
static void PrintChessBoard();
static BOOL TestNode(int i,int j);
void QueenAll();
在AllResult.cpp中进行定义
static BOOL EightQueen(){
//只需判断第一行中 是否有合适位置即可
BOOL bExist=FALSE;
for (int j=0;j<NUM;j++)
{
if (TestNode(0,j))
{
bExist=TRUE;
// break;
}
}
return bExist;
}
注: 定义的静态函数只能在本个 AllResult.h AllResult .CPP可以调用, 在其他.CPP .H中不可调用 , 即使将AllResult.h作为头文件包含到其他文件中,在其他文件中也不可调用此静态函数,因为,静态函数的有效范围是本次文件,当出了本文件范围后,则不可调用
静态函数只是在声明它的文件当中可见,不能被其他文件所调用,也就是说该函数只能在定义的.cpp或.c中调用,在其它.cpp或.c文件的函数里是不能调用的.
比如: 第3个文件queen.cpp
#include "stdafx.h"
#include "AllResult.h"
int main()
{
//调用了 AllResult.h 中的静态函数,因此编译时出错, 出现 函数已声明但未定义的错误
EightQueen();
//此函数也是AllResult.h 文件中定义的, 但因为不是静态函数,故可以在其他文件中使用
QueenAll();
getchar();
return 0;
}
3 类静态变量声明与赋值
类中进行声明:
public:
static CString m_filePath; // 只是起到声明作用,还需要定义
类外进行定义:
且不能在.H文件中进行定义, 需要在.CPP实现文字中定义
因为,如果在.H中进行定义的话, 连接时,很可能出现多重定义错误,因为包含了多次.H文件,就出现了多次定义
。cpp中定义:
CString CComputerNumDlg::m_filePath=_T("");
数据成员的声明与定义都是放在.h文件的类定义内部。对于数据类型,关键问题是其初始化要放在什么地方进行。
对于只含有static限定符的数据成员,它的初始化要放在.cpp文件中。因为它是所有类对象共有的,因此必须对它做合适的初始化。
对于只含有const限定符的数据成员,它的初始化只能在构造函数的初始化列表中完成。因为它是一经初始化就不能重新赋值,因此它也必须进行合适的初始化。
对于既含有static限定符,又含有const限定符的数据成员,它的初始化和定义同时进行。它也是必须进行合适的初始化
对于既没有static限定符,又没有const限定符的数据成员,它的值只针对本对象可以随意修改,因此我们并不在意它的初始化什么时候进行。
实例:
.h 类的定义
class Test
{
public:
Test(void);
static int m;
const int n;
// static const 在定义时进行初始化
static const int i=9;
};
.cpp类的实现
#include "StdAfx.h"
#include "Test.h"
Test::Test(void):n(10) // const 常量 在构造函数的初始化列表中进行初始化
{
}
//static 变量在.cpp 类的外部进行初始化
int Test::m=6;
4 定义全局变量
在TEST.H中 声明
extern int i;
在TEST.cpp中定义
int i=0;
在其他用到这个全局变量的CPP文件中,加上这个声明全局变量的头文件 TEST.H
这样,在该文件中就可以直接使用这个全局变量了
分析:
全局类型,声明写在.h文件中。
对于函数来讲,没有实现体的函数,就相当于是申明;
而对于数据类型(包括基本类型和自定义类型)来说,其申明就需要用extern来修饰。
然后在.cpp文件里定义、实现或初始化这些全局函数和全局变量。
工程.H
extern CketangApp theApp;
工程.CPP
CketangApp theApp;
在其它文件中用到时,添加工程.H
5 将CALLBACK函数 封装在类内部
此时,需要将CALLBACK函数,设置为静态函数,其所调用的类变量 也是类的静态变量
public:
static int CALLBACK BrowseCallbackProc(HWND hwnd,UINT uMsg,LPARAM lParam,LPARAM lpData)
{
CString str=_T("C:\\Program Files");
switch(uMsg)
{
case BFFM_INITIALIZED: //初始化消息
::SendMessage(hwnd,BFFM_SETSELECTION,TRUE,(LPARAM)(LPTSTR)(LPCTSTR)m_filePath); //传递默认打开路径 (方法一) m_filePath 为类的静态变量
break;
case BFFM_SELCHANGED: //选择路径变化,
{
TCHAR curr[MAX_PATH];
SHGetPathFromIDList((LPCITEMIDLIST)lParam,curr);
::SendMessage(hwnd,BFFM_SETSTATUSTEXT,0,(LPARAM)curr);
}
break;
default:
break;
}
return 0;
}
6 File *fp 获得文件长度
FILE* fp = _tfopen( filePath, _T("rb") );
if (fp==NULL)
{
MessageBox(L"未能打开");
}
// Get file length
fseek( fp, 0, SEEK_END );// 定位到文件末尾
int nFileByteLen = ftell( fp );//获得文件末尾处的位置 ---- 同时,此位置数值 也即是文件长度
fseek( fp, 0, SEEK_SET ); //定位到文件开始
本文使用 书画小说软件 发布,内容与软件无关,书画小说软件 更惬意的读、更舒心的写、更轻松的发布。
c++ 小知识总结 .xml的更多相关文章
- Android简易实战教程--第三十四话《 自定义SeekBar以及里面的一些小知识》
转载本专栏文章,请注明出处尊重原创:博客地址http://blog.csdn.net/qq_32059827/article/details/52849676:小杨的博客 许多应用可能需要加入进度,例 ...
- 记录一下学习Android的小知识
目前要设计即时通讯的整体架构,包括服务端.Android.IOS.PC.平板等等系统,所以需要研究一下手机的实现方式,开始从Android入手,偶尔在这记录下小知识. ADT: 1.页面功能请求结构, ...
- React Native环境配置、初始化项目、打包安装到手机,以及开发小知识
1.前言 环境:Win10 + Android 已经在Windows电脑上安装好 Node(v14+).Git.Yarn. JDK(v11) javac -version javac 11.0.15. ...
- 蓝牙Bluetooth技术小知识
蓝牙Bluetooth技术以及广泛的应用于各种设备,并将继续在物联网IoT领域担任重要角色.下面搜集整理了一些关于蓝牙技术的小知识,以备参考. 蓝牙Bluetooth技术始创于1994年,其名字来源于 ...
- HTML+CSS中的一些小知识
今天分享一些HTML.CSS的小知识,希望能够对大家有所帮助! 1.解决网页乱码的问题:最重要的是要保证各个环节的字符编码一致! (1)编辑器的编辑环境的字符集(默认字符集):Crtl+U 常见的编码 ...
- iOS APP开发的小知识(分享)
亿合科技小编发现从2007年第一款智能手机横空出世,由此开启了人们的移动智能时代.我们从一开始对APP的陌生,到现在的爱不释手,可见APP开发的出现对我们的生活改变有多巨大.而iOS AP ...
- Unix系统小知识(转)
Unix操作系统的小知识 2.VI添加行号/翻页/清屏 .在对话模式时(即输完Esc再输入: ),输入“:set number”可以将编辑的文本加上行号.跟玩俄罗斯方块一样方便的上下左右移动箭头的快捷 ...
- salesforce 零基础开发入门学习(十)IDE便捷小知识
在这里介绍两个IDE的便捷开发的小知识. 一) 本地调试 由于salesforce代码只能提交以后才能调试,所以很多时候调试代码很麻烦.新版增加了一个特性:即可以在本地调试相关的代码或者查看相关代码运 ...
- Jquery:小知识;
Jquery:小知识: jQuery学习笔记(二):this相关问题及选择器 上一节的遗留问题,关于this的相关问题,先来解决一下. this的相关问题 this指代的是什么 这个应该是比较好理 ...
随机推荐
- 初识CentOS服务命令大全
(1)系统架构 查看内核 # uname -s -r Linux 2.6.32-358.el6.x86_64 查看发布版本 # cat /etc/redhat-release CentOS relea ...
- nodpad++正则替换
则表达式是一个查询的字符串,它包含一般的字符和一些特殊的字符,特殊字符可以扩展查找字符串的能力,正则表达式在查找和替换字符串的作用不可忽视,它 能很好提高工作效率. EditPlus的查找,替换,文件 ...
- Hadoop namenode无法启动问题解决
原因:在root账户(非hadoop账户)下操作hadoop会导致很大的问题 首先运行bin/start-all.sh发现namenode没有启动 只有它们 9428 DataNode 9712 Jo ...
- UI抑制限制(UI Suppression Limitations)
运行UI抑制的Lync进程使你的应用程序可以访问同一个Lync客户端终端,SIP处理和所有非抑制Lync客户端使用的媒体处理,但具有以下限制.SDK中的可见组件不可用,除了视频窗体(video win ...
- linux RTC 驱动模型分析【转】
转自:http://blog.csdn.net/yaozhenguo2006/article/details/6824970 RTC(real time clock)实时时钟,主要作用是给Linux系 ...
- iReport —— A4打印,只占纸张的一半,如何解决
有没有遇到过这样的情况:用 iReport 生成的 pdf 文件在预览是好像挺好,但打印时却只占了A4 纸的一半(或许有其他情况,反正是不能占满纸张)? 新建报表时,默认的就是A4尺寸. 经过反复试验 ...
- eclipse中启动tomcat报错 java.lang.ClassNotFoundException
之前启动还好好的,某次启动tomcat就莫名其妙的报了这个java.lang.ClassNotFoundException的错. 检查maven依赖包,发现这个类是存在的. 然后一通clean操作 ...
- python中的列表(list) 切片详解
1.切片: 通过指定下标的方式来获得某一个数据元素,或者通过指定下标范围来获得一组序列的元素,这种访问序列的方式叫做切片. 访问某一个数据元素的的语法如下: sequence[index] ...
- 标准类型内建函数 cmp()介绍
内建函数cmp()用于比较两个对象obj1 和obj2, 如果obj1 小于obj2, 则返回一个负整数,如果obj1 大于obj2 则返回一个正整数, 如果obj1 等于obj2, 则返回0.它的行 ...
- JAVA反射技术的使用
前言 在开发html使用jquery提交post的时候,可以使用jquery遍历from元素里面的input元素实现参数组合,这样就不用手动打参数了,特别是在参数很多的时候,费神费时. 我开发Andr ...