- 博客(29)
- 资源 (11)
- 收藏
- 关注
原创 对象使用完成后
<br />class base { public: base() { cout << "base()"; }~base() { cout << "~base()"; }}; class subs: public base { public: subs() { cout << "subs()"; } ~subs() { cout << "~subs()"; } }; void main() {subs s;}
2011-01-03 19:26:00
438
原创 函数模板 缺省情况下是内联的。
<br /><br />在类的声明时,其成员函数的函数体写在类的结构体中时,认为其成员函数为默认的内联函数。其他的默认都不是内联函数。
2010-12-31 15:34:00
1417
原创 伦理
<br />我们知道malloc要和free成对出现,new要和delete成对出现,这样才安全,假使两对夫妻将他们拆为两对,那么这拆开的两对在一起工作时会安全吗?<br />所以,我们一定要成对出现,即使我们的贞操观念很强,伦理上也不符合。<br />
2010-12-30 20:41:00
4555
原创 访问域的问题
<br />#include<iostream>using namespace std;void f(){}class A{public: void f(int){}};class B : public A{public: using A::f; void f(int*){} static void f(int**){} void test();};void B::test(){ int x=0; int * p=N
2010-12-29 09:06:00
506
原创 父类的构造函数中最好不要调用虚函数
<br />class Base{public: int a; Base(){print();}; virtual ~Base(){ g_iCount += 1;}public: int getA(){} void setA(int i){} virtual void print(){cout<<"1"<<endl;}};class Derive:public Base{public: Derive(){print();} ~Derive(){
2010-12-27 09:20:00
723
原创 尽量用const和inline而不用#define
#define可以将“表达式”替换“函数”,形式 上完成了函数的功能,但是有些时候会出现问题,这时我们可以使用inline来取代#define。用#define定义常量时,用const会更安全,因为#define使用的是预处理器,而const使用的是编译器,会更安全。
2010-12-22 08:14:00
490
原创 赋值与复制的区别
<br />“复制”只会在对象初始化时才会出现。如果一个对象已经有值,而这个值要被重写或覆盖,这就是“赋值”。复制构造函数是一个构造函数,只能用于对象创建时,而不能用于对象的赋值;对象的赋值一般通过重载赋值操作符。
2010-12-17 08:51:00
998
原创 操作符重载的限制
<br />在操作符重载时以下所列的事情不能做:<br />1、不能增加新的操作符号。只能对语言列出的操作符重新定义其含义;<br />2、有些操作符不能重载,如对象的成员访问::,sizeof,三元操作符,等等<br />3、不能改变操作符的元数。即不能将一元操作改为二元等<br />4、不能改变操作符的优先级。<br />5、不能重新定义内置类型的操作符。
2010-12-16 09:05:00
426
原创 友元和继承访问类成员的方式的区别
<br />class dog{public: void shout(){cout<<"dog"<<endl;} friend class pig; dog(){dogyear=0;} ~dog(){}protected: int dogyear;};class niao{public: void shout() const{cout<<"niao"<<endl;}};class dogniao:public dog, public niao{
2010-12-15 10:03:00
1271
原创 容易上当的多态
class Base{public: virtual void display(std::string strShow = "I am Base class !") { std::cout display(); pDerive->display(); delete pBase; delete pDerive; return
2010-12-15 08:10:00
443
原创 多态
<br />class Base{public: virtual bool operator == (int iValue) { std::cout << "I am Base class !" << std::endl; return true; } virtual ~Base(){}};class Derive: public Base{public: virtual bool operator == (int iValue) { std
2010-12-14 08:49:00
385
原创 父类的构造函数中不能调用纯虚函数,同样在析构函数中不能调用纯虚函数
<br />#include <iostream>#include <string>using namespace std;class CParent{public: CParent() {} virtual ~CParent() {Print();}public: virtual void Print()=0 ;};class CSon : public CParent{public: CSon() {} vir
2010-12-14 08:17:00
954
原创 const要好好看看
<br />const int ic; <br />const int *pic; <br />int * const cpi;<br />const int * const cpic;<br />看看const的使用方法
2010-12-10 20:17:00
451
原创 变量初始化的顺序
<br />#include <iostream>using namespace std;class Base{protected: int m_a;public: Base(int a):m_a(a){} int getM_a(){return m_a;}};class Derived:public Base{ int m_b; int m_c;public: Derived (int a, int c):m_c(c), Base(a), m
2010-12-08 20:20:00
415
原创 C++多继承学习
<br />class A<br />{<br />public:<br /> void Func(){}<br />};<br />class B<br />{<br />private:<br /> bool Func() const{return 0;}<br />};<br />class C: <br /> public A, <br /> public B<br />{<br />}; // class definition is unimportant<br />int main()<br /
2010-12-08 11:14:00
517
原创 C++学习心得体会一
<br />1、在对子类对象进行删除时,会默认调用父类的析构函数,无论父类析构函数是否使用virtual关键字。<br />2、如果是父类指针指向的是子类对象,在删除该父类指针时,如果父类的析构函数没有使用virtual关键字,那么就不会调用子类的析构函数。因此,最好将所有的析构函数都使用virtual关键字。<br />3、对内联函数必须要进行定义。
2010-12-06 09:01:00
1141
原创 Android初试
第1章 Android应用程序开发步骤<br />通过边学习边记录的方式了解Android开发应用程序的方法。1.1 建立界面<br />建立界面主要是通过编写XML文档。1.1.1 应用程序的主界面为res/layout/main.xml<br />main.xml文件的内容为界面的主要部分。创建Android工程后可以首先修改此文件,修改的内容如下:<br /><?xml version="1.0" encoding="utf-8"?><br /><LinearLayout xmlns:andro
2010-09-05 23:02:00
501
转载 进程控制
进程控制与进程通信编程作者:宋宝华 1.Linux进程 Linux进程在内存中包含三部分数据:代码段、堆栈段和数据段。代码段存放了程序的代码。代码段可以为机器中运行同一程序的数个进程共享。堆栈段存放的是子程序(函数)的返回地址、子程序的参数及程序的局部变量。而数据段则存放程序的全局变量、常数以及动态数据分配的数据空间(比如用malloc函数申请的内存)。与代码段不同,如果系统中同时运行多个相同的程序,它们不能使用同一堆栈段和数据段。Linux进程主要有如下几种状态:用户状态(进程在用户状态下运行
2010-09-05 22:53:00
407
转载 进程控制与进程通信编程
进程控制与进程通信编程作者:宋宝华 1.Linux进程 Linux进程在内存中包含三部分数据:代码段、堆栈段和数据段。代码段存放了程序的代码。代码段可以为机器中运行同一程序的数个进程共享。堆栈段存放的是子程序(函数)的返回地址、子程序的参数及程序的局部变量。而数据段则存放程序的全局变量、常数以及动态数据分配的数据空间(比如用malloc函数申请的内存)。与代码段不同,如果系统中同时运行多个相同的程序,它们不能使用同一堆栈段和数据段。Linux进程主要有如下几种状态:用户状态(进程在用户状态下运行
2010-06-23 14:41:00
585
原创 函数指针
<br />函数指针是C语言中类似C++的多态的概念,应用场合如设备驱动中。<br />举例:<br />#include <stdio.h><br />int max(int x, int y) <br />{<br /> return (x>y?x:y);<br />}<br />int main(int argc, char* argv[])<br />{<br /> int max(int, int);<br /> int (*p)(int, int)=&max;<br /> int a, b, c
2010-06-08 22:28:00
373
转载 Linux环境进程间通信 信号
Linux环境进程间通信(二): 信号(上) 级别: 初级郑彦兴 (mlinux@163.com)国防科大2003 年 1 月 01 日linux信号机制远远比想象的复杂,本文力争用最短的篇幅,对该机制做了深入细致的分析。读者可以先读一下信号应用实例(在信号(下)中),这样可以对信号发送直到相应的处理函数执行完毕这一过程有个大致的印象。本文尽量给出了较新函数的应用实例,着重说明这些的功能。一、信号及信号来源信号本质信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理
2010-06-05 07:56:00
377
转载 Linux下C语言编程--进程通信、消息管理
前言:Linux下的进程通信(IPC) <br /> Linux下的进程通信(IPC) <br /><br />1.POSIX无名信号量 <br />2.System V信号量 <br />3.System V消息队列 <br />4.System V共享内存 <br /><br />-------------------------------------------------------------------------------- <br />1。POSIX无名信号量
2010-06-05 07:52:00
433
转载 有名管道
<br />mkfifo(建立实名管道)<br />相关函数<br />pipe,popen,open,umask<br />表头文件<br />#include<br />#include<br />定义函数<br />int mkfifo(const char * pathname,mode_t mode);<br />函数说明<br />mkfifo()会依参数pathname建立特殊的FIFO文件,该文件必须不存在,而参数mode为该文件的权限(mode%~umask),因此 umask值也会影响到
2010-06-05 07:22:00
554
转载 linux进程间通信方式之匿名管道
<br />linux的进程间通信方式主要有:匿名管道、有名管道、消息队列、共享内存、信号、信号量及信号灯、socket网络通信。近日由于项目需要,用linux编写arm的应用程序,里面有几个功能模块,若干进程,进程间的通信方式选择了管道、共享内存和信号量的配合。这几天终于把程序的框架搭建好了,而我也对管道通信有了进一步的认识。<br />匿名管道只能用于具有亲缘关系,如父子、兄弟这样的进程间通信。创建方式<br />#include <unistd.h><br />int pipe(int fd[2])
2010-06-05 07:11:00
653
原创 类与结构体的大小
<br />类的大小由其成员变量决定,结构体同样。请看下面的结果。<br />#include <iostream><br />using namespace std;<br />class A1 <br />{<br />public:<br /> int a;<br /> static b; //静态变量存放在全局区<br /> short c;<br /> A1();<br /> ~A1();<br />};//8<br />class A2<br />{<br />public:<br
2010-06-01 22:25:00
420
原创 数组和指针
天天在看程序,经常在写程序,对于基本的数组和指针,从来没有进行深刻的总结过。数组和指针,是程序分配内存的两种方式,对于不同的情况应该采用不同的策略。一般来说,提倡采用动态分配的方式来处理内存分配,按需分配,那就是用到指针了。但是,当分配的内存经常发生变化,需要重新分配或者在使用的时候比较频繁分配和删除时,可以考虑采用数组,也就是静态的分配的方式,这也就是兵法上说的一静制动、以不变应万变。区分下
2010-05-30 22:57:00
383
原创 我的第一篇博客文章-----JavaBean应用
本来是用笔记本记下来的,后来发现记在QQ空间或者优快云博客也不错,我以后把自己的学习经历留在这里,同时也接收大家的提醒,对自己更有益。1、Tomcat、JAVA环境配置就略过,直接采用MyEclipse建立Web Project工程,省去了配置目录的麻烦。 2、建立JavaBean类,应该严格按照java的命名规则来命名。 package com.javabean.lg;
2009-08-11 20:36:00
534
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人