CC++
mkmkmkkk
dz
展开
-
C++ using namespace std 详解 与 命名空间的使用
所谓namespace,是指标识符的各种可见范围。C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。一 :iostream>和iostream.h>是不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码是不一样的。后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定转载 2013-11-24 22:17:46 · 5839 阅读 · 0 评论 -
组合和继承
组合,有的书里面也叫聚合。由现有的类生成新的类,有两种方法就是组合与继承。我们把UML中的关联关系和聚集关系统称为组合关系。组合与继承都是提高代码可重用性的手段。在设计对象模型时,可以按照语义来识别类之间的组合关系和继承关系。在有些情况下,采用组合关系或者继承关系能完成同样的任务,组合和继承存在着对应关系:组合中的整体类和继承中的子类对应,组合中的局部类和继承中的父类对应。 组转载 2014-03-08 19:15:52 · 688 阅读 · 0 评论 -
Linux下C多线程编程
Linux系统下的多线程遵循POSIX线程接口,称为pthread。编写Linux下的多线程程序,需要使用头文件pthread.h,连接时需要使用库libpthread.a。顺便说一下,Linux下pthread的实现是通过系统调用clone()来实现的。clone()是Linux所特有的系统调用,它的使用方式类似fork,关于clone()的详细情况,有兴趣的读者可以去查看有关文档说明。下面我们转载 2014-03-07 23:28:58 · 498 阅读 · 0 评论 -
C++中public,protected,private访问
第一:private, public, protected 访问标号的访问范围。private:只能由1.该类中的函数、2.其友元函数访问。不能被任何其他访问,该类的对象也不能访问。protected:可以被1.该类中的函数、2.子类的函数、以及3.其友元函数访问。但不能被该类的对象访问。public:可以被1.该类中的函数、2.子类的函数、3.其友元函数访问,也可以由转载 2014-03-08 20:24:17 · 400 阅读 · 0 评论 -
字符串与指针
字符串与指针1、 字符串的表示形式在C语言中,我们可以用两种方式访问字符串(1) 用字符数组存放一个字符串,然后输出该字符串。main(){ char string[]="I love China!"; printf("%s\n", string);}(2) 用字符指针指向一个字符串。可以不定义字符数转载 2014-03-09 19:35:22 · 647 阅读 · 0 评论 -
指针变量输入字符串
关于指针变量输入字符串的问题,以前一直都不思考过这个问题。今天不小心犯了错误,终于发现了个问题。 #include void main(){ char *p; char str[10]; scanf("%s",str); printf("%s",str); printf("\n");// char array[10]; //p=array;转载 2014-03-09 19:44:04 · 4725 阅读 · 0 评论 -
变长数组
1.变长一维数组 这里说的变长数组是指在编译时不能确定数组长度,程序在运行时需要动态分配内存空间的数组。实现变长数组最简单的是变长一维数组,你可以这样做: 1: //文件名: array01.cpp 2: #include 3: using namespace std; 4: int main()转载 2014-03-30 23:41:19 · 1311 阅读 · 0 评论 -
关于c++中字符串的输入问题
现看示例程序:http://bbs.chinaunix.net/thread-532899-1-1.html#includeusing namespace std;int main(){ const int ArSize = 20; char name[ArSize]; char dessert[ArSize]; cout转载 2014-03-24 21:01:16 · 656 阅读 · 0 评论 -
void *指针
void *是通用的"万能"指针,值含有地址值,不含有类型信息,所以不能取内容要转换成其他类型的指针才可以,这样可以随意传递地址记住void *p;*p是不可以的!*(char *)p是可以的先转换后取内容转载 2014-03-24 21:50:20 · 423 阅读 · 0 评论 -
形参中的数组,实际是一个指针。sizeof为4,其他地方为数组大小
函数形参中的数组名,实际是一个指针。sizeof为4,其他地方为数组大小。转载 2014-04-07 13:29:26 · 890 阅读 · 0 评论 -
*p++和*++p的区别
接下来,通过示例彻底理解自增运算符的两种用法(自减的用法与之类似,只不过是加1变成了减1)。 1、++i和i++的区别 如清单1(注意代码中的注释): [cpp] view plaincopy#include int main(void) { int a, b, i = 7;转载 2014-04-10 23:13:57 · 752 阅读 · 0 评论 -
C语言中结构体对齐三原则
C语言中结构体对齐三原则 原则1、数据成员对齐规则:结构(struct或联合union)的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小的整数倍开始(比如int在32位机为4字节,则要从4的整数倍地址开始存储)。 原则2、结构体作为成员:如果一个结构里有某些结构体成员,则结构体成员要从其内部最大元素大小的整数倍地址开始存储。(转载 2013-12-03 12:15:04 · 999 阅读 · 0 评论 -
类和结构的对齐准则 这个最好
转载 2014-01-04 20:02:22 · 504 阅读 · 0 评论 -
sizeof(string)
今天看《程序员面试宝典》一书(为了应付将要到来的微软笔试),看到了sizeof(string)这个问题。在Dev C++上测试的结果是4,很不明白。上网搜了一下,得到如下结果:string strArr1[]={"Trend", "Micro", "Soft"};sizeof(strArr1)=12关于sizeof(string),今天看那本面试宝典的时候看到这个表达式,有转载 2014-06-23 15:25:25 · 624 阅读 · 0 评论 -
public private 和protected 继承
public private 和protected 继承 在C++中继承主要有三种关系:public、protected和private。这三种继承关系中public继承是最为常用的一种继承关系,private继承是最少见的继承关系。1. public从语义角度上来说,public继承是一种接口继承,根据面向对象中的关系而言就是,派生类可以代替基类完成基类接口所声明的行为,也就转载 2014-03-08 13:09:39 · 428 阅读 · 0 评论 -
Singleton
1、Singleton是一种创建型模式,指某个类采用Singleton模式,则在这个类被创建后,只可能产生一个实例供外部访问,并且提供一个全局的访问点,一般用于Activity的控制层全局对象和Singleton模式有本质的区别,因为大量使用全局对象会使得程序质量降低,而且有些编程语言根本不支持全局变量。最重要的是传统的全局对象并不能阻止一个类被实例化多次。 2.如何实现Sin转载 2014-03-08 19:33:11 · 603 阅读 · 0 评论 -
shared_ptr
shared_ptr是一个最像指针的"智能指针",是boost.smart_ptr库中最有价值、最重要的组成部分,也是最有用的,Boost库的许多组件--甚至还包括其他一些领域的智能指针都使用了shared_ptr。抱歉,我实在想不出什么更恰当的词汇来形容它在软件开发中的重要性。再强调一遍,shared_ptr非常有价值、非常重要、非常有用。 shared_ptr与scoped_p转载 2014-03-08 18:48:31 · 437 阅读 · 0 评论 -
c/c++static
静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0,使用时可以改变其值。 静态变量或静态函数只有本文件内的代码才能访问它,它的名字在其它文件中不可见。用法1:函数内部声明的static变量,可作为对象间的一种通信机制 如果一局部变量被声明为static,那么将只有唯一的一个静态分配的对象,它被用于在该函数的所有调用中表示这个变量。这个对象将只在转载 2013-11-28 13:05:15 · 466 阅读 · 0 评论 -
数组名作为函数参数
用数组名做函数参数与用数组元素作实参有几点不同:(1)用数组元素作实参时,只要数组类型和函数的形参变量的类型一致,那么作为下标变量的数组元素的类型也和函数形参变量的类型是一致的。因此,并不要求函数的形参也是下标变量。换句话说,对数组元素的处理是按普通变量对待的。用数组名作函数参数时,则要求形参和相应的实参都必须是类型相同的数组,都必须有明确的数组说明。当形参和实参两者类型不一致时,机会发生错误转载 2013-12-10 19:44:51 · 1075 阅读 · 0 评论 -
getch()、getche()和getchar()函数
getch()、getche()和getchar()函数 (1) getch()和getche()函数 这两个函数都是从键盘上读入一个字符。其调用格式为: getch(); getche(); 两者的区别是: getch()函数不将读入的字符回显在显示屏幕上, 而getche() 函数却将读入的字符回显到显示屏幕上。转载 2013-12-04 22:30:48 · 844 阅读 · 0 评论 -
C中的auto、static、register、extern、const和volitate
C语言中的每一个变量和函数有两个属性:数据类型和数据的存储类别。数据类型(整形、字符型等),存储类别是指数据在内存中存储的方法,存储方法有两大类:静态存储类和动态存储类。具体包括四种:自动的(auto),静态的(static),寄存器的(register)和外部的(extern)。 auto变量:函数中的局部变量,如不专门声明static,一般都是动态地分配存储空间。自动变量:在调转载 2014-01-02 11:54:31 · 646 阅读 · 0 评论 -
ifndef/define/endif作用和用法
问题:ifndef/define/endif”主要目的是防止头文件的重复包含和编译,偶只知道这个概念不懂的是怎么个用法,和为什么要用它~~高手请指点一下~~谢谢~~~!!!--------------------------------------------------------------------------------------------------用法:.h文转载 2014-01-04 15:47:37 · 591 阅读 · 0 评论 -
类和结构的对齐准则
转载 2014-01-04 19:59:43 · 506 阅读 · 0 评论 -
C语言中的带参数宏
一.带参数的宏1.带参数的宏定义不是简单的字符串替换,还要进行参数替换定义格式为:#define 宏名(参数表) 字符串1>字符串包含括号中所有指定的参数eg: #define S(a,b) ((a)*(b)) area=S(3,2)2>编译系统处理带参数的宏名时,按程序行中指定的字符串,括号内的内容,从左到右进行处理,若遇到形参则以实参代替,非形转载 2014-01-04 16:24:48 · 738 阅读 · 0 评论 -
程序员面试宝典(三)P107
有这样一段代码#include #includeusing namespace std;class base{private: int m_i; int m_j;public: base(int i):m_j(i),m_i(m_j){} base():m_j(0),m_i(m_j){} int get_i() {return m_i;} int g转载 2014-01-11 21:20:35 · 529 阅读 · 0 评论 -
赋值函数
每个类只有一个赋值函数.由于并非所有的对象都会使用拷贝构造函数和赋值函数,程序员可能对这两个函数有些轻视。请先记住以下的警告,在阅读正文时就会多心:1.如果不主动编写拷贝构造函数和赋值函数,编译器将以“位拷贝”的方式自动生成缺省的函数。倘若类中含有指针变量,那么这两个缺省的函数就隐含了错误。以类String的两个对象a,b为例,假设a.m_data的内容为“hello”,b.m_d转载 2014-01-13 15:35:42 · 530 阅读 · 0 评论 -
拷贝构造函数
拷贝构造函数,是一种特殊的构造函数,它由编译器调用来完成一些基于同一类的其他对象的构建及初始化。其唯一的参数(对象的引用)是不可变的(const类型)。此函数经常用在函数调用时用户定义类型的值传递及返回。拷贝构造函数要调用基类的拷贝构造函数和成员函数。如果可以的话,它将用常量方式调用,另外,也可以用非常量方式调用。目录1概述调用拷贝构造函数的情形转载 2014-01-13 15:36:15 · 477 阅读 · 0 评论 -
return返回空
return是返回值,如果没有值,那么就返回空,编写者其实也就是想中断函数执行,返回调用函数处,而break只是退出所在的循环体转载 2014-02-03 13:42:02 · 3593 阅读 · 0 评论 -
C++中的explicit
C++中, 一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数), 承担了两个角色。 1 是个构造器 ,2 是个默认且隐含的类型转换操作符。所以, 有时候在我们写下如 AAA = XXX, 这样的代码, 且恰好XXX的类型正好是AAA单参数构造器的参数类型, 这时候编译器就自动调用这个构造器, 创建一个AAA的对象。这样看起来好象很酷, 很方便。 但在转载 2014-02-12 12:05:02 · 407 阅读 · 0 评论 -
c++中,一个没有拷贝构造函数和重载=运算符的string类,
c++中,一个没有拷贝构造函数和重载=运算符的string类,会出现什么问题,如何解决?如果没有定义拷贝构造函数和重载=运算符,则系统会自动生成逐位拷贝的函数。当我们用string初始化string时,(比如 string a("abc"); string b = a;),两个对象会指向同样的内存地址。在两个对象的析构函数中,我们会对同一个内存块调用两次删除,导致不确定的结果。当我转载 2014-03-06 12:10:20 · 968 阅读 · 0 评论 -
单链表的反向
昨天看CSDN的一个文章提到,某公司面试时问到单向链表的反转问题,有好多程序员答不出来。以前我也没做过类似的题目,试着写了一下。问题描述:已知一个单向链表,写一个函数,使得该链表的方向反转,即头变尾,尾变头,指示方向相反。分析:该问题可以有两种方法,一是交换首尾两个节点的数据,而不改变其内存的存储结构,二是改变所有节点的指向下一个节点的指针。显然第二种方法更加有效。转载 2014-03-06 12:04:30 · 559 阅读 · 0 评论 -
字符串与指针
1、 字符串的表示形式在C语言中,我们可以用两种方式访问字符串(1) 用字符数组存放一个字符串,然后输出该字符串。main(){ char string[]="I love China!"; printf("%s\n", string);}(2) 用字符指针指向一个字符串。可以不定义字符数组,而定义一个字符指转载 2014-06-16 21:11:20 · 774 阅读 · 0 评论