C++
文章平均质量分 81
高达一号
这个作者很懒,什么都没留下…
展开
-
C++_运算符重载的注意事项
1、重载操作符没必要一定是成员函数,还可以是友元函数。2、重载操作符函数为成员函数主要是你需要操作类内部的成员,必须是成员函数或友元函数才行。3、至于由深浅拷贝的原因要使其成为成员函数,这个不知道。4、如果运算符被重载为全局函数,那么只有一个参数的运算符叫做一元运算符,有两个参数的运算符叫做二元运算符。如果运算符被重载为类的成员函数,那么一元运算符没有参数,二元转载 2015-09-06 11:32:02 · 3304 阅读 · 0 评论 -
C_获得当前的工作路径 _getcwd()函数:取得当前的工作目录
相关函数:get_current_dir_name, getwd, chdir头文件:#include 定义函数:char * getcwd(char * buf, size_t size);函数说明:getcwd()会将当前的工作目录绝对路径复制到参数buf 所指的内存空间,参数size 为buf 的空间大小。注:1、在调用此函数时,buf 所指的内存空间要足转载 2015-08-14 08:44:58 · 14384 阅读 · 0 评论 -
C/C++, ","逗号运算符, 基本类型数据的初始化声明
"," 逗号运算符可以完成两个语句的连接,完成相当于在一个语句中完成两个语句的任务。但是以下情况不行,数据的初始化声明运用到“,”运算符只能完成一种数据的声明与初始化。#include using namespace std;int main(){ int i = 0, int j = 0; cout << i << " " << j << endl; return原创 2015-08-10 08:48:06 · 1700 阅读 · 0 评论 -
C/C++__函数指针
学好函数指针有着较为重要的意义,如Windows编程中WNDCLASS结构体的 lpfnWndProc 成员就是一个函数指针,下面介绍简单的函数指针应用。void ToUpper(char *);void ToLower(char *);int round(double);/***声明了一个名为pf的函数指针, 该函数指针可以指向一个函数*该函数特点:返回值原创 2015-07-28 09:49:27 · 823 阅读 · 0 评论 -
C__数据类型的强制转换
不同大小的数据类型不能强制转换#include #include using namespace std;struct pk{ int d; int a;};int main(){ pk b; int destory = (int)b; return 0;}但是数据大小相同的数据类型就可以进行强制类型转换,即使这两种数据类型是指针与结构体或者in原创 2015-07-23 18:14:45 · 989 阅读 · 0 评论 -
Java/C++_类的默认的初始值
JavaJava类数据类型分为基本类型 和 引用类型。基本类型若没赋初始值则为(数值类型为0/0.0, boolean类型为false,)引用类型(包括类,接口,数组类型)若没赋初始值则为nullpublic class Test { public int a; public int[] b; public static void main(String[] args)原创 2015-09-30 11:57:43 · 828 阅读 · 0 评论 -
C/C++_中NULL与空字符串的区别
今天遇到一个问题认识到C/C++中 NULL 与 空字符串 "" 是不相同的总结如下:空字符串是"",会创建一个对象,内容是"",有内存空间。而NULL,不会创建对象,没有内存空间。形象的比喻:"" 相当于我的钱包里没钱 NULL 相当于我没有钱包 遇到的问题化简如下:利用strcpy进行字符串的复制strcpy不能用NULL作为源原创 2015-08-28 16:37:17 · 20547 阅读 · 1 评论 -
C语言文件操作 fopen, fclose, mkdir(打开关闭文件,建文件夹,判断文件是否存在可读或可写)
1.建文件夹int _mkdir(const char *path,mode_t mode);函数名: _mkdir 功 能: 建立一个目录 用 法: int _mkdir( const char *dirname ); 头文件库:direct.h 返回值:创建一个目录,若成功则返回0,否则返回-1==========================转载 2015-08-13 20:58:51 · 2337 阅读 · 0 评论 -
C/C++_static函数与普通函数
全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不转载 2015-08-10 16:33:43 · 4740 阅读 · 0 评论 -
C/C++__typedef用法
1.常规变量类型定义例如:typedef unsigned char uchar描述:uchar等价于unsigned char类型定义 uchar c声明等于unsigned char c声明2.数组类型定义例如: typedef int array[2];描述: array等价于 int [2]定义; array a声明等价于int a[2]声明扩展: ty转载 2015-09-18 10:31:31 · 562 阅读 · 0 评论 -
C__删除文件操作
用remove函数功 能: 删除一个文件 用 法: int remove( const char *filename);头文件:在Visual C++ 6.0中可以用stdio.h返回值:如果删除成功,remove返回0,否则返回EOF(-1)。例:#include int main(){ if(remove("1.txt")) printf("Could not de转载 2015-05-15 17:00:35 · 6733 阅读 · 0 评论 -
C/C++关键字中的extern 和 static
extern 关键字的用法,示例:在tet.cpp中声明了一个变量,而想在main的主文件中使用这个变量,就可以使用extern关键字来找到这个变量。不需要包含 .h 的方法。项目目录:tet.cppint a = 5;static int z = 7;void swap_b(int a, int b){ int temp; temp = a; a = b;原创 2015-08-10 16:52:16 · 621 阅读 · 0 评论 -
C++_string_basic_string::c_str() 与 basic_string::data() 区别
basic_string::c_str() 与 basic_string::data() 区别const value_type *c_str( ) const;const value_type *data( ) const; data只是返回原始数据序列,没有保证会用traits::eos(),或者说'\0'来作字符串结束. 当然,可能多数实现都这样做了。 c_st转载 2015-09-08 17:46:38 · 840 阅读 · 0 评论 -
C/C++__基础类型的(=)赋值表达式的返回值
今天遇到了一段代码对赋值运算符之后的表达式进行判断,由于之前没接触过类似的代码,特此记录。if ((pTmpBuf = pBuf) != NULL)结论: C/C++中 (A = B) 返回得到是赋值号(=)的左面的值代码如下 :if ((nStatus == NERR_Success) || (nStatus == ERROR_MORE_原创 2015-09-17 11:42:13 · 6466 阅读 · 3 评论 -
C++_wcout / C_wprintf (wcout输出中文)
int _tmain(int argc, _TCHAR* argv[]){ wcout.imbue(std::locale("chs")); wstring s = (L"我爱"); wcout wcout system("pause"); return 0;} iostream、printf/wprintf和中文输出转载 2015-09-18 12:09:13 · 6186 阅读 · 1 评论 -
C/C++_文件重定向的几种方式
这篇文章也谈不上原创,只是总结了C/C++文件重定向的几种方式:注意:转载地址:源地址:http://blog.csdn.net/chinabinlang/article/details/6408575 www.cnblogs.com/submarinex/ 方法一:#include转载 2015-09-01 17:30:49 · 4916 阅读 · 0 评论 -
C++/C语言_宏函数存在的问题
C语言中的宏函数可以简化我们的操作。但是存在一定的问题,宏函数是不能使用++a/a++,--a/a--这种形式的。这样会导致BUG(所得到的结果与预想结果不一致)。原因就是宏函数是进行的文本拷贝,而不是传递的参数。示例代码如下:#include using namespace std;#define SQUARE(X) ((X)*(X))原创 2015-08-10 10:31:55 · 1517 阅读 · 0 评论 -
C/C++ static使用方法注意
static 貌似声明在结构体数组中是不可以的。#include #include using namespace std;#define MAXN 255typedef struct PP{ int b; static int c;}P;int main(){ P K[MAXN]; K[1].c = 4; printf("%d\n", K[2].c); re原创 2015-08-10 20:43:02 · 591 阅读 · 0 评论 -
C/C++_位运算符 与 逻辑运算符的区别
逻辑运算符有 || ,&&, != , ! 表示条件判断,常来用作条件的选择。位运算符有 |, &, ~等。编程习惯注意 : |(或运算符)与 ||(逻辑或)是不一致的。 |(或运算)主要对位进行或操作,例如 0010(B) | 0001(B) , 则对应的位置如果不同则为1,上式的结果为 0011(B).示例:| 运算符常用来做位的原创 2015-08-04 17:33:43 · 4426 阅读 · 0 评论 -
C/C++__带参数的main函数
通过win32控制台的main函数的参数,我们可以对文件等数据进行处理main函数可以不带参数,也可以带参数,这个参数可以认为是 main函数的形式参数。C语言规定main函数的参数只能有两个,习惯上这两个参数写为argc和argv。因此,main函数的函数头可写为: main (argc,argv)C语言还规定argc(第一个形参)必须是整型变量,argv( 第二个原创 2015-07-27 18:13:10 · 3410 阅读 · 0 评论 -
C_printf中的%p的实质
格式控制符“%p”中的p是pointer(指针)的缩写。指针的值是语言实现(编译程序)相关的,但几乎所有实现中,指针的值都是一个表示地址空间中某个存储器单元的整数。printf函数族中对于%p一般以十六进制整数方式输出指针的值。示例:#include #include int main(){ int *p = new int; int a = 4; printf("%04d\n原创 2015-07-23 17:49:55 · 20087 阅读 · 4 评论 -
C/C++__string与字符串的转换问题
1、首先必须了解,string可以被看成是以字符为元素的一种容器。字符构成序列(字符串)。有时候在字符序列中进行遍历,标准的string类提供了STL容器接口。具有一些成员函数比如begin()、end(),迭代器可以根据他们进行定位。注意,与char*不同的是,string不一定以NULL('\0')结束。string长度可以根据length()得到,string可以根据下标访问。所以,转载 2015-05-15 10:45:21 · 4463 阅读 · 1 评论 -
C_C++_Java Java利用JNI调用C的函数
大神博客:http://blog.sina.com.cn/s/blog_4bb52a1601012x8j.html主要步骤一 声明一个Java类,将其中的需要C实现的函数声明为native二 用javac 编译 .java文件生成一个 .class文件三 用javah 编译 生成C/C++的头文件.h四 创建动态链接库项目并包含必要的java的.h文件注意事项--1.头原创 2015-11-05 21:58:05 · 618 阅读 · 0 评论 -
Java/C++中静态成员函数
一 Java中静态成员函数不能调用非静态的成员函数和非静态的成员变量。示例:public class Cow { private double weight; public Cow() { } public Cow(double weight) { this.weight = weight; } class CowLeg { private double leng原创 2015-10-08 16:25:33 · 1173 阅读 · 0 评论 -
C++_中的不可变类
有时候我们希望创建一个类,这个类里面的数据都是不可改变的就是说当我们创建这个类的时候类内的数据已经确定了。#include using namespace std;class Test{private: int a;public : Test() :a(5){} Test(int a){ this->a = a; } void SetA(int temp)原创 2015-10-08 20:03:52 · 1420 阅读 · 0 评论 -
C++/Java__中类模板中的静态成员变量和静态成员函数
C++:类模板实例化的每个模板类(每个模板类指的是对于声明时候对模板指定的类型,如List,List中的int,double.)都有自己的类模板静态数据成员,该模板类的所有对象,共享一个静态数据成员。Tips:(重要)1.模板类的静态数据成员应在文件范围内初始化。(包含模型)(重要)2.每个模板类有自己的类模板的静态数据成员和成员函数副本。 1.2详见《C++Templat原创 2015-10-13 22:01:34 · 5030 阅读 · 0 评论 -
C++__类模板的派生
基础知识:类模板的派生 1) 普通类派生类模板 2) 类模板也可以派生类模板,这时,派生类模板的参数表中应包含基类模板的参数。 3) 模板类与普通类一样也具有多继承,即模板类之间允许有多继承。 可以从类模板派生出新的类,既可以派生类模板,也可以派生非模板类。派生方法:⑴ 从类模板派生类模板可以从类模板派生出新的类模板,它的派生格式如下原创 2015-10-13 19:21:58 · 5495 阅读 · 0 评论 -
C++_的引用的析构,引用空间的释放
今天遇到一个问题,C++中的引用变量,如果引用被析构,原数据是否会存在,例如 int a = 5; int& b = a; delete &b; a是否能被访问到,博主写了个测试程序。经测试,数据已经通过析构函数被释放不能,相当于数据空间已经被回收,望大家注意。附上测试代码和测试的流程图:#include #include using namespace std;class原创 2015-10-29 21:36:25 · 5428 阅读 · 1 评论 -
C_C++_Java_简单题_for的流程
for(a;b;c)for 的流程相当于 while..do 结构,先判断条件是否满足,之后才执行步骤。for 最先执行a 部分(进行初始化),之后进行逻辑判断(b部分),接下来运行内部逻辑 ,之后运行 for 的对数据修改( c 部分);之后运行for 的 逻辑判断(b 部分),运行 for 的内部逻辑, 运行 对数据修改 (c 部分);。。。。。。如此反复,直至b部分不原创 2015-10-30 11:10:24 · 537 阅读 · 0 评论 -
C_C++_Java_JavaScript_逗号表达式
对逗号表达式的支持C/C++ 支持JavaScript 不支持Java 支持示例代码:C++#include using namespace std;int main(){ while (true, 2, false){ cout << "xx" << endl; } cout << "end of loop" << endl; int x原创 2015-11-05 10:27:49 · 820 阅读 · 0 评论 -
C++ __虚继承与继承的差异
前面一篇文章,说明了在C++ 虚继承对基类构造函数调用顺序的影响。经过仔细推敲,发现没有彻底说清楚虚继承与普通继承之间的关系。所以用下面的文字再说明一下。首先,重复一下虚拟继承与普通继承的区别有:假设derived 继承自base类,那么derived与base是一种“is a”的关系,即derived类是base类,而反之错误;假设derived 虚继承自base类,那么转载 2015-09-16 09:02:24 · 653 阅读 · 0 评论 -
C/C++__如何创建一个空字符串数组
字符串数组在使用前应进行初始化操作。下面介绍两种创建空字符串数组的方法初始化方法1char szFileName[MAXN] = {0} /**其结果相当于memset(szFileName,0,sizoef(szFileName));*即对字符串数组中的每个数据都初始化为(ASCII)0 即 "\0" **/初始化方法2c原创 2015-07-27 17:38:05 · 26195 阅读 · 1 评论 -
C/C++__字符串的结束符“\0”到底是什么
一直对字符串的结束符"\0"的具体意义感到困惑,今天实际测试了一下,最终我找出来了答案。#include #include #pragma warning(disable:4996)#define MAXN 2000int main(int argc, char **argv){ char szFileName[MAXN] = "\0"; //char szFile原创 2015-07-27 17:52:47 · 21311 阅读 · 0 评论 -
C++/STL关联容器-集合-multiset&set的用法
C++ STL set和multiset的使用std::set s;那个s这个对象里面存贮的元素是从小到大排序的,(因为用std::less作为比较工具。)1,set的含义是集合,它是一个有序的容器,里面的元素都是排序好的,支持插入,删除,查找等操作,就 像一个集合一样。所有的操作的都是严格在logn时间之内完成,效率非常高。 set和multiset的区别是:set插入的转载 2015-05-06 16:23:00 · 608 阅读 · 0 评论 -
C/C++_宏定义多次重复定义
$MS编译器下宏多次重复定义以最后的作为标准#include using namespace std;#define MAX 5#define MAX 4#define MAX 3int main(){ printf("%d\n", MAX); return 0;}原创 2015-09-10 18:18:32 · 17524 阅读 · 0 评论 -
C++_虚析构函数
C++中的虚析构函数。虚析构函数常用在类的有继承关系的类中。虚析构函数可以保证类中的资源被有效的回收,防止内存的泄露。C++中正确的析构顺序是 派生类析构函数->基类析构函数。内存的泄露会发生在基类指针指向派生类对象的时候,(即多态的时候)。例如如下代码:#include using namespace std;class Base{public: void原创 2015-09-30 12:32:55 · 717 阅读 · 0 评论 -
C++___的虚拟继承的一些总结
1.为什么要引入虚拟继承虚拟继承是多重继承中特有的概念。虚拟基类是为解决多重继承而出现的。如:类D继承自类B1、B2,而类B1、B2都继承自类A,因此在类D中两次出现类A中的变量和函数。为了节省内存空间,可以将B1、B2对A的继承定义为虚拟继承,而A就成了虚拟基类。实现的代码如下:class Aclass B1:public virtual A;class B2:p转载 2015-09-16 10:04:01 · 395 阅读 · 0 评论 -
C语言_为什么字符串可以赋值给字符指针变量,字符串的属性及存放位置
C语言中,为什么字符串可以赋值给字符指针变量本文是通过几篇转帖的文章整理而成的,内容稍有修改:一、C语言中,为什么字符串可以赋值给字符指针变量char *p,a='5';p=&a; //显然是正确的,p="abcd"; //但为什么也可以这样赋值??问:一直理解不了为什么可以将字串常量转载 2015-08-29 15:18:59 · 3579 阅读 · 1 评论 -
C_动态内存分配,malloc/free
malloc函数原型extern void *malloc(unsigned int num_bytes);头文件#include 功能分配长度为num_bytes字节的内存块返回值如果分配成功则返回指向被分配内存的指针(此存储区中的初始值不确定),否则返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。函数原创 2015-07-31 15:25:49 · 1262 阅读 · 0 评论 -
C/C++_sizeof的本质与使用注意事项
Tag: program转自:http://rabbitlzx.blogbus.com/logs/2006/03/2094407.html1、什么是sizeof 首先看一下sizeof在msdn上的定义: The sizeof keyword gives the amount of storage, in bytes, associated wi转载 2015-07-31 14:58:00 · 1580 阅读 · 1 评论