- 博客(16)
- 收藏
- 关注
原创 友元类和友元函数
将一个函数声明为友元函数 这个函数可以访问该类的私有变量#include #include using namespace std;class point{private: int x,y;public: point(int i=0,int j=0) :x(i),y(j) { } void disp() { cout }
2015-07-28 23:38:50 146
原创 C++关于引用问题
(a)Sales_data &conbine(Sales_data );(b)Sales_data &conbine(Sale_data &);当我们调用i.conbine(s)的时候:s是个字符串,当构造函数没有加explicit会隐士转换成类对象(a)是正确的 编译器首先为s生成一个Sales_data对象,然后将这个临时对象传递给conbine做参数
2015-07-28 23:28:37 138
原创 C++问题
(a)Sales_data &conbine(Sales_data );(b)Sales_data &conbine(Sale_data &);当我们调用i.conbine(s)的时候:s是个字符串,当构造函数没有加explicit会隐士转换成类对象(a)是正确的 编译器首先为s生成一个Sales_data对象,然后将这个临时对象传递给conbine做参数(b)无
2015-07-27 21:42:14 181
原创 单设计模式
目标:内存中只能有一份对象#include #include //1. Singleton不能为栈对象,如果为栈对象,可以在fun1,fun2,main中创建很多个,那就只能通过是堆对象//2. 不能直接通过new表达式来创建堆对象,如果通过new的方式创建的对象地址都不同//3. 位于public区域getInstance函数不能是普通成员函数,如果getInstan
2015-07-23 23:29:31 114
原创 特殊成员函数
特殊函数成员1静态成员函数静态成员函数体内不能使用非静态的成员变量和非静态的成员函数;只能调用静态成员数据和函数因为静态属于一个类,而不是某个对象,所以没有this指针要想访问成员变量和成员方法,需要在函数的参数中传入一个对象#include #include #include using namespace std;class computer{
2015-07-23 23:19:47 109
原创 特殊数据成员的初始化
4种特殊的数据成员(常量数据成员,引用数据成员,类对象成员,静态成员)1const数据成员初始化在构造函数体内或拷贝构造函数体内初始化const数据成员都是非法的const数据成员只能通过成员初始化表进行初始化#include #include using namespace std;class Point{private: const int xP
2015-07-23 23:01:00 107
原创 C++析构函数
析构函数没有返回值,不能指定参数.因此只能有一个.没有显示定义析构函数,编译器将为类生成缺省的析构函数,只清除类的数据成员所占据的空间,对类的成员变量通过new和malloc动态申请的内存无能为力,应该在析构函数中通过delete或free释放,避免对象撤销造成内存泄露.什么时候被调用?1全局定义的对象,main之前,就调用全局对象的构造函数,程序结束时调用析构函数
2015-07-22 22:25:22 149
原创 c++类
c++ class 和struct 的区别唯一区别就是struct 默认是public 而 class 默认是privatec++类的实现1在类的定义时同时完成成员函数的定义2在类的外部定义成员函数类的定义实际上是定义一种类型,类不接受或存储具体的值,只作为生成具体对象的蓝图只有将类实例化,创建对象后,系统才为对象分配存储空间对象的创建和撤销1构造函数
2015-07-22 22:06:38 126
原创 c/C++程序内存分配方式
程序的内存布局1栈区 编译器自动分配,存放函数的参数值,局部变量的值等.2堆区 由程序员分配释放.3全局/静态区 全局变量和静态变量的存储是放在一起的.4文字常量区 存放常量字符串5程序代码区 存放函数体(类的成员函数,全局函数)的二进制代码#include #include #include #include using namespace std
2015-07-22 21:41:10 128
转载 string函数(转)
之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。 首先,为了在我们的程序中使用stri
2015-07-21 23:56:16 261
原创 const关键字
1定义常量(定义常量必须初始化)const int ival=10;int const ival=10;//和上面的等价2定义指向常量的指针(常量指针)int a=10;const int *pa=&a //pa可以改,但是所指向的内容不能修改3定义指针常量int b;int *const pb=&b; //pb指向对象不能改,当时可以改内容4定义指向常量的指
2015-07-21 23:18:35 110
原创 c++ 名词空间
名词空间 为了解决名字冲突的现象.名词空间的定义:namespace 名称空间名{}代码1:#include using namespace std;namespace A{void dispA(){ cout }}// end namespace of Anamespace B{ void dispB()
2015-07-21 23:03:56 207
原创 进程3
_exit和exit的一个区别_exit(0)直接退出,不刷新缓存区.系统调用exit(0)先刷新缓存区后在退出.库函数int main(){ cout// fflush(stdout); _exit(0);}上述代码加上注释则什么都不输出,去掉注释打印进程IDatexit 注册在函数结束时调用的函数,输出顺序和注册顺序相反.void exit
2015-07-11 16:09:06 107
原创 文件3
文件表条目(file_table_entry)1:文件状态标志:读/写/追加/同步/非阻塞等2:当前文件偏移量3:v节点指针每次打开一个文件返回一个文件描述符,一个文件描述符对应一个文件表,每个文件表记录了对应文件描述符的读取偏移指针int main(){ int fd1=open("test.txt",O_RDONLY); if(-1==fd1)
2015-07-11 11:24:01 189
原创 文件2
#Include #include #include 1int stat(const char *path,struct stat *buf);2int fstat(int fd,struct stat *buf);3int lstat(const char *path,struct stat *buf);#include 4struct passwd *get
2015-07-11 10:59:30 119
原创 文件1
1linux中一切都是文件文件有2中方式:1:文件描述符 (0,STDIN_FILENO),(1,STDOUT_FILENO),(2,STDERR_FILENO)2文件指针 (文件描述符和文件指针(FILE *)一一对应,(0,stdin)(1,stdout)(2,stderr)两者之间的转换(1)int fileno(FILE *stream) //文件指针转
2015-07-10 23:13:25 212
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人