载入中。。。 'S bLog
 
载入中。。。
 
载入中。。。
载入中。。。
载入中。。。
载入中。。。
载入中。。。
 
填写您的邮件地址,订阅我们的精彩内容:


 
VC++学习笔记5-类的声明 定义和实现 构造函数与析构函数
[ 2010/7/7 20:08:00 | By: 梦翔儿 ]
 

//类的声明 定义和实现
//car.h头文件,用来声明并定义类
#ifndef CAR_H_ //防止被重复引用头文件
#define CAR_H_
#i nclude <string>
using namespace std;

struct color
{
 unsigned char red;
 unsigned char blue;
 unsigned char green;
};

class car
{
private:
 char id[32+1];
 string name;
 color clr;
public:
 void print();
 void getColor(color& ref_clr);
 void setColor(color _clr);
};
#endif/**CAR_H_/
=========
#i nclude "car.h"

void car::print()
{
 cout<<"ID:"<<name<<endl;
}

void car::getColor(color& ref_clr)
{
 ref_clr=clr;
}

void car::setColor(color _clr)
{
 clr=_clr;
}
=============
//类的内联函数和非内联函数
class A
{
public:
 void fun()
 {

 }
};

//等同于
//.h文件
class A
{
public:
 void fun()
};
//.cpp文件
inline void A::fun()
{

}
============
//构造函数,就理解为初始化函数
class car
{
public:
 car() //注意没有void,和类同名
 {
  //内存清零,设置颜色为(0,0,0)
  memset(&clr,0,sizeof(color))
  //设置颜色为(255,0,0) 红色
  clr.red=255;
 }
private:
 char id[32+1];
 string name;
 color clr;
public:
 void print();
 void getColor(color& ref_clr);
 void setColor(color _clr);
};
======
class test
{
public:
 int i; //创建时会调用默认的构造函数
};

test t; //栈上创建类对象
test* p1=new test(); //堆上建类
test* p2=new test[100]; //堆上建对象数组
=======
class test
{
public:
 test(){i=0;} //i值默认为0
 int i; //创建时会调用默认的构造函数
};
=======
class test
{
public:
 test(int k){i=k;} //也可以带参数,传给i
 int i; //创建时会调用默认的构造函数
};

//调用
test t(5); //栈上创建类对象
test* p1=new test(5); //堆上建类
test* p2=new test[0]; //错误,不支持带参数的构造函数调用
=========
class test
{
public:
 test(){i=0;}
 test(int k){i=k;} //也以重载
 //也可以上两句话合二为一  test(int k=0){i=k;}
 int i; //创建时会调用默认的构造函数
};
//传入时根据参数匹配构造参数
test t; //调用test()构造函数
test* p1=new test(5); //调用test(int)构造函数
test* p2=new test[100]; //调用test()构造函数
=========
//利用构造函数的匹配功能,可以加入更多的一些新的特性
class car
{
public:
 car() //注意没有void,和类同名
 {
  //内存清零,设置颜色为(0,0,0)
  memset(&clr,0,sizeof(color))
  //设置颜色为(255,0,0) 红色
  clr.red=255;
 }
 //通过一个颜色来创建一个车对象
 car(color _clr)
 {
  clr=_clr;
 }
 //通过三元色来创建
 car(unsigned char r,unsigned char g,unsigned char b)
 {
  clr.red=r;
  clr.blue=b;
  clr.green=g;
 }
private:
 char id[32+1];
 string name;
 color clr;
public:
 void print();
 void getColor(color& ref_clr);
 void setColor(color _clr);
};
=========
//析构函数是在销毁时执行的东东
class test
{
public:
 test(int k=0){i=k;}
 ~test(){} //析构
 int i;
};

void fun()
{
 test t; //调用构造函数

 test* p=new test() //调用构造函数
 p.~test(); //手动析构
 p=new test();
 delete p; //调用析构

 test* p2=new test[100]; //调用100次构造
 delete [] p2; //调涤100次析构函数
}
=========

 
 
发表评论:
载入中。。。

 
 
 

梦翔儿网站 梦飞翔的地方 http://www.dreamflier.net
中华人民共和国信息产业部TCP/IP系统 备案序号:辽ICP备09000550号

Powered by Oblog.