随笔-159  评论-114  文章-7  trackbacks-0
 
g++ -c 编译成为目标文件

g++ -o 编译指定输出文件名

   g++ Info_test_list.cc Info.cc -o Info_test

如果是在windows上,使用Dev-C++,它支持ANSI-C比较好。

#include <> 包含头文件
#include "" 自己的头文件

   #include <iostream>
   using namespace std;

头文件:

/usr/local/include/c++/3.2/

g++自动能找到标准头文件。

可以自己定义命名空间:

namespace std{

}

#include <iostream>
using namespace std;

namespace czq{
   
int var = 100;
}


int main()
{
    cout 
<< czq::var << endl;
    
return 0;
}


最后一行应该有一个空行。

在C++中表示字符串,有三种方法,string类,char* char name[]。

char name[] = "John",这是一个字符串末位有一个'\0',也就是第五个字符。

'J''o''h''n''\0'

那么char str[5] 只能放四个字符。

int main(int argc,char argv[])
{

}

argc至少为1,因为参数个数包含可执行文件本身。

argv[0],可以用于检查执行文件名是否被修改,用于版权保护哦。

=============================

在C++中,只要不是0,就是真,那么0包括0、'\0'、NULL、false

例子:猜数:

#include <iostream>
using namespace std;

int main()
{
    unsigned 
int t = time( NULL );//随即数产生
    unsigned 
int num = t * 37 % 100;
    unsigned 
int data;
    
int i;
    cout
<<"input a number between 0~99:";
    
for( i=0; i<10; i++ ){
        cin 
>> data;
        
if!cin ){//如果输入流没有读到整型,那么就会设置错误标志
            cout
<<"Invalid number!\n";
            cin.clear();
            cin.ignore( 
100'\n' );//忽略字符,最多100个,遇到\n就结束忽略
            
continue;
        }

        
if( data == num ){
            cout
<<"you got it!"<<endl;
            
break;
        }

        
else if( data < num ){
            cout
<<"too small!"<<endl;
        }

        
else
            cout
<<"too big!"<<endl;
        cout
<<"try again:";
    }

    
if( i >= 10 )
        cout 
<< "the answer is " << num << endl;
    
return 0;
}



atoi函数可以转换字符串变为整数。不成功为0

#include <iostream>
using namespace std;

int main(int argc,char* argv[])
{
    
int score;
    
char* p = "10000";
    
    score 
= atoi(p);
    
    cout 
<< score << endl; 
    cin.
get();
    cin.
get(); 
    
return 0;    
}

 

C++,只要定义变量,就会分配空间。只有纯声明性的东西才不会分配空间。

int a;//这时就已经分配了4个字节

对于对象来说,创建对象有两种途径:1、直接定义  2、new 在堆空间

int a = 0;这是初始化,C++大部分情况不会自己初始化,可能保存着不确定的值,需要程序员完成初始化。

a = 9; 这是赋值,赋值与初始化是完全不同的概念,赋值操作实质是进行内存数据的复制。初始化,定义时分配空间后给一个值而已。

赋值与初始化的区别体现的更明显 对象的初始化和赋值是完全不同的概念

posted @ 2006-01-11 21:51 北国狼人的BloG 阅读(538) | 评论 (0)编辑 收藏
据澳大利亚广播公司10日报道,现在笔记本电脑越来越普及,尤其是很多年轻人,不管走到哪里,想查找资料或玩游戏了,找个地方一坐,将电脑在双腿上一放,一工作或游戏就是半个小时甚至更长的时间。但最新一项研究显示,笔记本电脑产生的热量会使阴囊的温度上升,从而可能影响精液的数量。研究人员警告,频繁使用笔记本电脑可能影响男性的生育能力。
  美国研究人员在《人类繁殖》杂志上公布的研究结果表明,笔记本电脑会令阴囊的温度上升差不多3摄氏度。领导此项研究的纽约州立大学副教授耶菲姆·舍金表示,长期频繁使用接触笔记本电脑已成为现代生活的特征,但频繁使用笔记本电脑会使阴囊温度过高,可能使男性精子的数量减少,尤其对十几岁的男孩和年轻男子影响明显。

  研究人员认为,长时间将笔记本电脑放在双腿上工作,这是男性精子数量减少的一个重要原因。最新研究结果表明,笔记本电脑运行时内部最高温度可达到70多摄氏度。研究人员表示:“在膝盖位置上频繁使用笔记本电脑会将阴囊直接暴露给电脑内部散发出的热量。此外,使用笔记本电脑需要特殊的身体姿势,阴囊会挤在紧闭的大腿之间,影响精子的数量。”

  2001年,《手术刀》杂志曾报道过一名男子在使用笔记本电脑后生殖器和阴囊被灼伤的案例。澳大利亚男性生育专家、墨尔本大学教授戈登·贝克表示,他对男性使用笔记本电脑后阴囊温度上升并不感到奇怪。但他对频繁使用笔记本电脑对男性生育的影响表示怀疑。贝克教授说:“科学家对笔记本电脑的底部提出了不少警告,我能够想象到如果你将笔记本电脑放在膝盖上,这有可能影响你的阴囊。但人们经常暴露于很高的温度环境下,却难以找到表明温度高真正损害精子数量的直接证据。”

  舍金教授领导的这项研究涉及29位年龄在21岁至35岁之间的男性。研究人员称,在他们使用笔记本电脑一小时后,他们左侧阴囊和右侧阴囊的温度分别平均上升了2.6摄氏度和2.8摄氏度。一些研究发现阴囊温度上升1摄氏度就足以抑制精子的产生。尽管研究人员目前还不清楚男性最好使用多长时间笔记本电脑才不至于使精子数量减少,但他们还是建议十几岁的男孩和年轻男子应该尽可能少使用笔记本电脑。
posted @ 2006-01-09 22:52 北国狼人的BloG 阅读(396) | 评论 (0)编辑 收藏

某个类要想实现拷贝的功能,就必须实现Cloneable接口,并覆盖Object的clone()方法,才能真正实现克隆。

浅拷贝,一种默认的实现,Teacher类中的clone方法的实现就是浅拷贝。

Student类的clone方法就是深拷贝。注意super.clone返回的对象实际上是被类的对象,可以放心强制转换,至于为什么,我也不知道,估计得读虚拟机规范,从Object源码看也不到什么,因为是protect native Object clone();


import java.util.*;
public class TestClone{
 
public static void main(String[] args)
 
{
  Teacher t 
= new Teacher("Name",22);
  Teacher m 
= (Teacher)t.clone();
  System.out.println(m);
  
  Student stu 
= new Student();
  Student deepcloneSTU 
= (Student)stu.clone();
  stu.courses.put(
new Integer(1),"Math");
  deepcloneSTU.courses.put(
new Integer(100),"Java");
  disp(stu.courses);
  disp(deepcloneSTU.courses);
  
 }

 
 
static void disp(HashMap h)
 
{
  Set keySet 
= h.keySet();
  Iterator it 
= keySet.iterator();
  
while(it.hasNext())
  
{
   System.out.println(h.get(it.next()));
  }

 }

}


class Teacher implements Cloneable{
 String name;
 
int age;
 Teacher(String name,
int age)
 
{
  
this.name = name;
  
this.age = age;
 }

 
 
public Object clone()
 
{
  
try{
   
return super.clone();
  }
catch(CloneNotSupportedException e)
  
{
   
throw new Error("This should never happen!"); 
  }

 }

 
 
public String toString()
 
{
  
return name + "  " + age;
 }

}


class Student implements Cloneable{
 HashMap courses 
= new HashMap();
 Student()
{} 
 
 
public Object clone()
 
{
  
try{
   Student stu 
= (Student)super.clone();
   stu.courses 
= (HashMap)courses.clone();
   
return stu;
  }
catch(CloneNotSupportedException e)
  
{
   
throw new Error("This should never happen!"); 
  }

 }

}




如何通过对象串行化的方式来做进行拷贝工作呢?

import java.util.*;
import java.io.*;
public class TestClone{
    
public static void main(String[] args) throws Exception
    
{
        BMW mycar 
= new BMW();
        ByteArrayOutputStream memoryOutputStream 
= new ByteArrayOutputStream();
        ObjectOutputStream serializer 
= new ObjectOutputStream(memoryOutputStream);
        serializer.writeObject(mycar);
        serializer.flush();
        
        ByteArrayInputStream memoryInputStream 
= new ByteArrayInputStream(memoryOutputStream.toByteArray( ));
        ObjectInputStream deserializer 
= new ObjectInputStream(memoryInputStream);
        BMW mycopycar 
= (BMW)deserializer.readObject();

        mycar.add(
new String("NB"));
        mycopycar.add(
new String("NBNB"));
      System.out.println(mycar.hashCode());
      System.out.println(mycopycar.hashCode());
      System.out.println(mycar.equals(mycopycar));
    }

}


class BMW implements Serializable
{
    
private int wheels;
  
private String model;
  
private ArrayList forTest;
  
  BMW()
  
{
      wheels 
= 4;
      model 
= "530i";
      forTest 
= new ArrayList();
  }

  
  
public void add(Object o)
  
{
      forTest.add(o);
  }

  
  
public String toString()
  
{
      
return "WHEEL:" + wheels + "MODEL:" + model + forTest.toString();    
  }

  
  
public int hashCode()
  
{
      
return wheels + model.hashCode() + forTest.hashCode();    
  }

  
  
public boolean equals(Object o)
  
{
      
if(o == this)
          
return true;
      
if(o == null)
          
return false;
      
if(!(o instanceof BMW))
        
return false;
      BMW bmw 
= (BMW)o;
      
if(bmw.wheels == wheels&&bmw.model.equals(model)&&bmw.forTest.equals(forTest))
          
return true;
      
else return false;
  }
  
}


记住,如果覆盖了equals方法,应该也覆盖hashCode(),因为如果两个对象相等也就是equals()返回true,那么这两个对象应该有相同的hashCode。

posted @ 2006-01-08 17:15 北国狼人的BloG 阅读(3589) | 评论 (0)编辑 收藏


食物和皮肤之间有着密切的联系,那么,哪些食物是皮肤最喜欢的呢?皮肤科专家们为我们总结出了以下
10种:

 

1.西兰花

它含有丰富的维生素A、维生素C和胡萝卜素,能增强皮肤的抗损伤能力、有助于保持皮肤弹性。

 

2.胡萝卜

胡萝卜素有助于维持皮肤细胞组织的正常机能、减少皮肤皱纹,保持皮肤润泽细嫩。

 

3.牛奶

它是皮肤在晚上最喜爱的食物,能改善皮肤细胞活性,有延缓皮肤衰老、增强皮肤张力、消除小皱纹等功效。

 

4.大豆

其中含有丰富的维生素E,不仅能破坏自由基的化学活性、抑制皮肤衰老,还能防止色素沉着。

 

5.猕猴桃

富含维生素C,可干扰黑色素生成,并有助于消除皮肤上的雀斑。

 

6.西红柿

含有番茄红素,有助于展平皱纹,使皮肤细嫩光滑。常吃西红柿还不易出现黑眼圈,且不易被晒伤。

 

7.蜂蜜

含有大量易被人体吸收的氨基酸、维生素及糖类,常吃可使皮肤红润细嫩、有光泽。

 

8.肉皮

富含胶原蛋白和弹性蛋白,能使细胞变得丰满,减少皱纹、增强皮肤弹性。

 

9.三文鱼

其中的欧咪伽?3脂肪酸能消除一种破坏皮肤胶原和保湿因子的生物活性物质,防止皱纹产生,避免皮肤变得粗糙。

 

10.海带

    它含有丰富的矿物质,常吃能够调节血液
 
posted @ 2006-01-07 22:52 北国狼人的BloG 阅读(271) | 评论 (0)编辑 收藏
手机什么时候辐射最强?

 

    当人们使用手机时,手机会向发射基站传送无线电波,而无线电波或多或少地会被人体吸收,这些电波就是手机辐射。一般来说,手机待机时辐射较小,通话时辐射大一些,而在手机号码已经拨出而尚未接通时,辐射最大,辐射量是待机时的3倍左右。这些辐射有可能改变人体组织,对人体健康造成不利影响。

posted @ 2006-01-06 19:09 北国狼人的BloG 阅读(321) | 评论 (0)编辑 收藏
     摘要: 一台主机有个IP地址(逻辑地址),MAC(物理地址)。用IP可以找到一台主机。能交换数据的是进程,进程之间交换数据,不是计算机。一个程序.exe,静态的概念,一个进程,在内存中,运行态的概念。某些进程会占用固定的端口,进程与端口对应。把一个端口和进程建立联系的叫做绑定。FTP《=》端口21进程间通讯是两个端口建立连接。由于机器通讯,要有相同的语言,为保证数据正常交互,预先约定好协议。网络体系架构,...  阅读全文
posted @ 2005-12-29 14:19 北国狼人的BloG 阅读(372) | 评论 (1)编辑 收藏
指针一个种特殊的变量,用来存放其他变量的地址。

定义一个变量,就会分配内存,就会开空间,有地址,地址与变量的值无关系。变量地址不会改变。

int theVariable = 5;
int *pPointer = &theVariable;

那么寻找变量:
1.通过变量名,可以访问变量。
2.通过地址,可以找到变量。(地址唯一,不变)

指针只保存地址。

一个变量的地址是有意义的,可以进行运算(+/-数字,相减,比较)。

指针就是一个用来保存地址的特殊变量。

=================================

由于地址有类型,所以指针也有类型。(不信?只知道地址,如果不知道类型,取几个字节无从获知)。

int类型的地址就是四个字节。

所以一定要明确  地址需要赋予一个类型的概念。

int i = 5;

取地址符号,会取得有类型的地址,&i(整型变量的地址)

char ch = 'A';

&ch,就是字符类型的地址

int *p = &i;

这个语句的含义:定义一个类型是int的指针变量p,并将i的地址给p,p只存储了地址。

指针类型必须与地址类型一致。

指针的类型由它所指向的存储空间的内容的类型来确定,什么类型的变量,就用什么类型指针。

任何数据类型,都有指针。

指针是用来保存变量的地址,所以int *p = 2000; 不可以!!

指针+1一定是找到下一个变量。有类型信息进而找到下一个同类型的变量。

int i = 100;
int *p = &i;
char ch = 'a';
p = &ch;

错!指针类型严格匹配。

可以给指针赋一个NULL,NULL表示内存0号单元,起始位置。不可以读,也不可以写。禁止访问。
试图访问,段错误。

在使用指针之前,

===========================

char *p = "hello";//存于常量区,不可以修改
"hello"一个字符串,也就是一个字符数组,p的地址就是这个字符数组第一个元素的地址:一个char类型的地址。
p[0] 就是'h'。

===========================

posted @ 2005-12-28 00:27 北国狼人的BloG 阅读(337) | 评论 (0)编辑 收藏
     摘要: 需求,java程序与外届交流数据。实际上是OS与JVM内存交互数据。那么针对程序,有输出流,也有输入流。java.io包下,File类,它表示文件系统上的一个文件或者目录。方法,总体来说是对磁盘文件的磁盘操作,不能看内容,主要是为了获得文件和文件属性。File dir = new File("d:\");File f = new File(dir,"11.txt");// -->创建文件对象...  阅读全文
posted @ 2005-12-25 00:08 北国狼人的BloG 阅读(416) | 评论 (0)编辑 收藏
     摘要: class Stack{    int index=0;    char data[]=new char[6];    public synchronized void push(char c){&n...  阅读全文
posted @ 2005-12-15 00:32 北国狼人的BloG 阅读(565) | 评论 (2)编辑 收藏
     摘要: 由于本人已经有了很多界面开发经验,对于这块不是重点,只列举一些例子。JSF和Web Start(jnlp+jar),将逐步替代Swing和Applet的地位。图形界面开发,步骤一定要记住。1.选择容器2.设置布局管理器,Panel默认为Flow,Frame默认为Border3.添加组件,可能是容器组件的多层嵌套4.添加时间处理,add***Listener,并给出实现。事件模型是重点. impo...  阅读全文
posted @ 2005-12-11 21:15 北国狼人的BloG 阅读(305) | 评论 (0)编辑 收藏
仅列出标题
共17页: First 上一页 9 10 11 12 13 14 15 16 17 下一页