随笔分类 -  JAVA&C++

上一页 1 2
如何为类中的常量赋值
摘要:#include <string>#include <iostream>using namespace std;class A{ const string name; public: A(const string& id=""):name(id){} ~A(){} void print(){ cout << name<<endl; }};class B{ string name; public: B(const string id){name=id;} ~B(){}... 阅读全文
posted @ 2012-06-01 11:24 york_hust 阅读(257) 评论(0) 推荐(0)
拷贝构造函数
摘要:编译器对于从现有的对象产生新的对象这一事件的处理不近如人意一般的拷贝,如函数参数为对象时,编译器会把这个对象完整的拷贝一份,这样的拷贝被称为"位拷贝",但是这样拷贝可能带来问题,如在构造函数中我们有对这个对象的一些初始化,比如记录这个对象创造的时间,然后把这个时间存在对象中,如果使用"位拷贝",那么拷贝得到的对象的时间值和原对象是相同的,不仅函数参数为对象时会出现这样的问题,函数返回值为对象时也会出现这样的问题解决这个问题的方法就是写一个拷贝构造函数,X(X& x)是类X的拷贝构造函数,如果有这个构造函数,编译器在进行对象拷贝时就会先调用这个拷贝 阅读全文
posted @ 2012-06-01 09:59 york_hust 阅读(192) 评论(0) 推荐(0)
assert()函数用法
摘要:assert宏的原型定义在assert.h中,其作用是如果它的条件返回错误,则终止程序执行. 原型定义: 1 #include "assert.h"2 void assert( int expression ); assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。 请看下面的程序清单badptr.c: 01 #include02 #include03 #include04 int main( void )05 {06 FILE *fp;07 08 fp =... 阅读全文
posted @ 2012-05-30 20:15 york_hust 阅读(2633) 评论(0) 推荐(0)
extern使用说明
摘要:1 基本解释 extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。 另外,extern也可用来进行链接指定。2 问题:extern 变量 在一个源文件里定义了一个数组:char a[6]; 在另外一个文件里用下列语句进行了声明:extern char *a; 请问,这样可以吗? 答案与分析: 1)、不可以,程序运行时会告诉你非法访问。原因在于,指向类型T的指针并不等价于类型T的数组。extern char *a声明的是一个指针变量而不是字符数组,因此与实际的定义不同,从而造成运行时非法访问。应该将声明改为extern c 阅读全文
posted @ 2012-05-30 15:45 york_hust 阅读(763) 评论(0) 推荐(0)
如何解决NO ARGUMENTS THAT DEPEND ON A TEMPLATE PARAMETER
摘要:Aside: I haveaC++ programofmoderate complexity that I have to return to every 12-18 months to fixan obscure bug oraddamodest festure.And every time, I spentone or two days just trying to get the thing build with the latest compiler, which picks up previously legal codeand decides to whineabout it, g 阅读全文
posted @ 2012-05-29 21:25 york_hust 阅读(4459) 评论(0) 推荐(0)
c++类继承中的using声明,派生类中用using声明改变基类成员的访问权限[zz]
摘要:以下观点用visual studio 2008 c++ 试验可行,但难免有误,如发现错误请指出。在《c++primer第四版中文》p572页的注解中指出:“派生类可以恢复继承成员的访问级别,但不能使访问级别比基类中原来指定的更严格或更宽松”。亲自用visual studio 2008试验了一下,怀疑书上观点有误,特别写出和大家交流,以找出正确答案。 在基类中的private成员,不能在派生类中任何地方用using声明。 在基类中的protected成员,可以在派生类中任何地方用using声明。当在public下声明时,在类定义体外部,可以用派生类对象访问该成员,但不能用基类对象访问该成员;当在 阅读全文
posted @ 2012-05-29 21:24 york_hust 阅读(720) 评论(0) 推荐(0)
C++中struct和class的区别 [zz]
摘要:一、C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能。struct能包含成员函数吗?能!struct能继承吗?能!!struct能实现多态吗?能!!!最本质的一个区别就是默认的访问控制,体现在两个方面:1)默认的继承访问权限。struct是public的,class是private的。写如下的代码:struct A{char a;};struct B : A{char b;};这个时候B是public继承A的。如果都将上面的struct改成class,那么B是private继承A的。这就是默认的继承访问权限。所以我们在 阅读全文
posted @ 2012-05-29 21:23 york_hust 阅读(20892) 评论(2) 推荐(2)
关于C++中enum的探讨[zz]
摘要:如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型。之所以叫枚举就是说将变量或者叫对象可能存在的情况也可以说是可能的值一一例举出来。举个例子来说明一吧,为了让大家更明白一点,比如一个铅笔盒中有一支笔,但在没有打开之前你并不知道它是什么笔,可能是铅笔也可能是钢笔,这里有两种可能,那么你就可以定义一个枚举类型来表示它!enumbox{pencil,pen};//这里你就定义了一个枚举类型的变量叫box,这个枚举变量内含有两个元素也称枚举元素在这里是pencil和pen,分别表示铅笔和钢笔。 这里要说一下,如果你想定义两个具有同样特性枚举类型的变量那么你可以用如下的两种方式进行定义!. 阅读全文
posted @ 2012-05-29 11:32 york_hust 阅读(482) 评论(0) 推荐(0)
C++之模板[zz]
摘要:有以下这样3个求加法的函数: 1 int Add(int x,int y) 2 { 3 return x+y; 4 } 5 6 double Add(double x,double y) 7 { 8 return x+y; 9 }10 11 long Add(long x,long y)12 {13 return x+y;14 }它们拥有同一个函数名,相同的函数体,却因为参数类型和返回值类型不一样,所以是3个完全不同的函数。即使它们是二元加法的重载函数,但是不得不为每一函数编写一组函数体完全相同的代码。如果从这些函数中提炼出一个通用函数,而它又适用于多种不同类型的数据,这样会使代码的重... 阅读全文
posted @ 2012-05-24 11:28 york_hust 阅读(223) 评论(0) 推荐(0)
友元类
摘要:《windows环境多线程编程原理与应用》中解释: 如果将类的封装比喻成一堵墙的话,那么友元机制就像墙上了开了一个门,那些得 到允许的类或函数允许通过这个门访问一般的类或者函数无法访问的私有属性和方法。友元机制使类的封装性得到消弱,所以使用时一定要慎重。友元类的说明将外界的某个类在本类别的定义中说明为友元,那么外界的类就成为本类的“朋 友”,那个类就可以访问本类的私有数据了。class Merchant{private : int m_MyMoney; int m_MyRoom; … …public: Friend class Lawyer; Int getmoney(); … …};clas 阅读全文
posted @ 2012-05-23 20:02 york_hust 阅读(309) 评论(0) 推荐(0)
c++默认实参[zz]
摘要:默认实参是一种虽然并不普遍、但在多数情况下仍然适用的实参值。调用函数时,可以省略有默认值的实参。编译器会为我们省略的实参提供默认值。默认实参是通过给形参表中的形参提供明确的初始值来指定的。程序员可为一个或多个形参定义默认值。但是,如果有一个形参具有默认实参,那么,它后面所有的形参都必须有默认实参。例如,下面的函数创建并初始化了一个 string 对象,用于模拟窗口屏幕。此函数为窗口屏幕的高、宽和背景字符提供了默认实参:string screenInit(string::size_type height = 24,string::size_type width = 80,char backgro 阅读全文
posted @ 2012-05-23 15:25 york_hust 阅读(1653) 评论(0) 推荐(0)
char *a=0
摘要:char *a=0是指给a所指的位置赋值'\0'与char *a='\0'是一个意思下面的例子可以说明:char str[] = "abcdefg";char *ptr = NULL;prt = str + 2; //指向c*prt = 0; //str 为 ab,因为现在str[]=ab'\0'defg'\0'*prt = 'c'; //str 为 abcdefg 阅读全文
posted @ 2012-05-22 17:43 york_hust 阅读(338) 评论(0) 推荐(0)
inline函数_内联函数的一些总结(zz)
摘要:inline函数我们看下面的函数,函数体中只有一行语句:double Average(double total, int number){return total/number;}定义这么简单的函数有必要吗?实际上,它还是有一些优点的:第一,它使程序更可读;第二,它使这段代码可以重复使用。但是,它也有缺点:当它被频繁地调用的时候,由于调用函数的开销,会对应用程序的性能(时间+空间效率,这儿特指时间)有损失。例如,Average在一个循环语句中重复调用几千次,会降低程序的执行效率。那么,有办法避免函数调用的开销吗?对于上面的函数,我么可以把它定义为内联函数的形式:inline double Av 阅读全文
posted @ 2012-05-22 16:29 york_hust 阅读(470) 评论(0) 推荐(0)
C++头文件[转]
摘要:一、C++编译模式通常,在一个C++程序中,只包含两类文件——.cpp文件和.h文件。其中,.cpp文件被称作C++源文件,里面放的都是C++的源代码;而.h文件则被称作C++头文件,里面放的也是C++的源代码。C+ +语言支持“分别编译”(separate compilation)。也就是说,一个程序所有的内容,可以分成不同的部分分别放在不同的.cpp文件里。.cpp文件里的东西都是相对独立的,在编 译(compile)时不需要与其他文件互通,只需要在编译成目标文件后再与其他的目标文件做一次链接(link)就行了。比如,在文件a.cpp中定义 了一个全局函数“void a() {}”,而在文 阅读全文
posted @ 2012-05-22 16:03 york_hust 阅读(271) 评论(0) 推荐(0)
Netty简单样例分析[转]
摘要:转自:http://linugb118.blog.51cto.com/272628/420738Netty 是JBoss旗下的io传输的框架,他利用java里面的nio来实现高效,稳定的io传输。作为io传输,就会有client和server,下面我们看看用netty怎样写client和serverClient:需要做的事情:1.配置client启动类 ClientBootstrap bootstrap = new ClientBootstrap(..)2.根据不同的协议或者模式为client启动类设置pipelineFactory。这里telnet pipline Factory 在nett 阅读全文
posted @ 2012-03-30 10:16 york_hust 阅读(539) 评论(0) 推荐(0)
Applet编程——Applet与Servlet通信
摘要:在今天的多层结构的web应用程序的设计中,我们可以同时使用Java applet和Servlet。Applet为建立功能强大的动态界面提供了便利的机制,Servlet为web服务器或者其他应用服务器处理请求提供了高效率的手段。Sun公司的应用程序模型描述了在Java 2平台下开发企业级的Java应用的最好的规范。一种被推荐的规范是:在前端使用Applet、HTML和JSP,在后端使用Enterprise JavaBeans支持的Servlet及其他成分。 这种体系结构的关键是在客户端的Applet和在服务器说?ervlet之间的通信。但是由于Applet受浏览器安全模式的限制,在一个Apple 阅读全文
posted @ 2011-07-27 20:22 york_hust 阅读(3030) 评论(1) 推荐(1)
servlet与applet通信示例
摘要:servlet 1 import java.io. * ; 2 import java.util.Date; 3 import javax.servlet. * ; 4 import javax.servlet.http. * ; 5 publicvoid Riceive extends HttpServlet 6 { 7 publicvoid service(HttpServletRequest req,HttpServletResponse res) throws ServletException,IOException 8 { 9 res... 阅读全文
posted @ 2011-07-27 09:17 york_hust 阅读(859) 评论(0) 推荐(0)
[转]java中servlet应用介绍
摘要:Servlet是使用JavaServlet应用程序设计接口及相关类和方法的Java程序。它在Web服务器上或应用服务器上运行并扩展了该服务器的能力。Java Servlet对于Web服务器就好像Java Applet对于Web浏览器。Applet装入Web浏览器并在Web浏览器内执行,而Servlet则是装入Web服务器并在Web服务器内执行。 Java Servlet API 定义了Servlet和服务器之间的一个标准接口,这使得Servlet具有跨服务器平台的特性。 Servlet通过创建一个框架扩展服务器的能力,采用请求-响应模式提供 Web服务。当客户机发送请求至服务器时,服务器... 阅读全文
posted @ 2011-07-24 11:10 york_hust 阅读(352) 评论(0) 推荐(0)
[转]Java接口的作用
摘要:今天和同事好好的讨论了下接口的原理和作用, 发现原来自己的对接口的理解仅仅是局限在概念的高度抽象上, 觉得似乎理解了但是不会变化使用其实和没有理解差不多。 以前看一个帖子说学习一个东西不管什么时候都要带着“这个东西是什么?”、“这个东西有什么作用?”和“这个东西怎样用?”三个问题, 这三个问题回答下去了阐明你对这个事物的理解到达了一定的高度。 今天还有一个比拟深的阅历是要学习到知识就要多和人交流。 就像以前某个管理人员说得“要疯狂的交流”。 现在关于今天学到的接口局部做一个详细地总结: 接口的概念其实并不难理解, 接口关键字Interface, 在使用时可以只定义函数体而不需求详细的实现... 阅读全文
posted @ 2011-07-19 15:53 york_hust 阅读(3139) 评论(0) 推荐(0)

上一页 1 2