网站建设资讯

NEWS

网站建设资讯

c语言变量构造函数,C语言函数变量

如何用c语言实现CString的构造函数,析构函数和赋值函数

类是编程人员表达自定义数据类型的C++机制。它和C语言中的结构类似,C++类

成都创新互联公司10多年成都企业网站定制服务;为您提供网站建设,网站制作,网页设计及高端网站定制服务,成都企业网站定制及推广,对VR全景等多个行业拥有多年的网站维护经验的网站建设公司。

支持数据抽象和面向对象的程序设计,从某种意义上说,也就是数据类型的设

计和实现。

那么

String

类的原型如下

class

String

{

public:

String(const

char

*str=NULL);

//构造函数

String(const

String

other);

//拷贝构造函数

~String(void);

//析构函数

String

operator=(const

String

other);

//等号操作符重载,赋值函数

ShowString();

private:

char

*m_data;

//字符指针

};

String::~String()

{

delete

[]

m_data;

//析构函数,释放地址空间

}

String::String(const

char

*str)

{

if

(str==NULL)//当初始化串不存在的时候,为m_data申请一个空间存放'/0';

{

m_data=new

char[1];

*m_data='/0';

}

else//当初始化串存在的时候,为m_data申请同样大小的空间存放该串;

{

int

length=strlen(str);

m_data=new

char[length+1];

strcpy(m_data,str);

}

}

String::String(const

String

other)//拷贝构造函数,功能与构造函数类似。

{

int

length=strlen(other.m_data);

m_data=new

[length+1];

strcpy(m_data,other.m_data);

}

String

String::operator

=(const

String

other)

//赋值函数

{

if

(this==other)//当地址相同时,直接返回;

return

*this;

delete

[]

m_data;//当地址不相同时,删除原来申请的空间,重新开始构造;

int

length=sizeof(other.m_data);

m_data=new

[length+1];

strcpy(m_data,other.m_data);

return

*this;

}

String::ShowString()//由于m_data是私有成员,对象只能通过public成员函数来访问;

{

coutthis-m_dataendl;

}

测试一下:

main()

{

String

AD;

char

*

p="ABCDE";

String

B(p);

AD.ShowString();

AD=B;

AD.ShowString();

}

C语言 用函数初始化结构变量

或者通过参数传进去,如

void Init(stu_handlertus *hdl)

{

hdl-count = 1;

for(i = 0; i 50; ++i)

{

hdl-rtus[i].rtuindex = 0

hdl-rtus[i].a = 0;

hdl-rtus[i].b = 0;

hdl-rtus[i].c = 0;

}

}

调用

Init( handlertus);

即可。

不过结构:

struct stu_handlertus

{

int count;

struct stu_handlertus rtus[50];

}handlertus;

是错误的,原因是这一句

struct stu_handlertus rtus[50];

这样就不知道结构stu_handlertus的大小了。所以上面改为

struct stu_handlertu rtus[50];

两个结构名字这么接近,是一个不好的风格。

C语言 类的构造函数和析构函数(考试在线等!急!!!)

类是编程人员表达自定义数据类型的C++机制。它和C语言中的结构类似,C++类

支持数据抽象和面向对象的程序设计,从某种意义上说,也就是数据类型的设

计和实现。

一、类的设计

1.类的声明

class 类名

{

private: //私有

...

public: //公有

...

};

2.类的成员

一般在C++类中,所有定义的变量和函数都是类的成员。如果是变量,我们就叫

它数据成员如果是函数,我们就叫它成员函数。

3.类成员的可见性

private和public访问控制符决定了成员的可见性。由一个访问控制符设定的可

访问状态将一直持续到下一个访问控制符出现,或者类声明的结束。私有成员

仅能被同一个类中的成员函数访问,公有成员既可以被同一类中的成员函数访

问,也可以被其他已经实例化的类中函数访问。当然,这也有例外的情况,这

是以后要讨论的友元函数。

类中默认的数据类型是private,结构中的默认类型是public。一般情况下,变

量都作为私有成员出现,函数都作为公有成员出现。

类中还有一种访问控制符protected,叫保护成员,以后再说明。

4.初始化

在声明一个类的对象时,可以用圆括号()包含一个初始化表。

看下面一个例子:

#include iostream.h

class Box

{

private:

int height,width,depth; //3个私有数据成员

public:

Box(int,int,int);

~Box();

int volume(); //成员函数

};

Box::Box(int ht,int wd,int dp)

{

height=ht;

width=wd;

depth=dp;

}

Box::~Box()

{

//nothing

}

int Box::volume()

{

return height*width*depth;

}

int main()

{

Box thisbox(3,4,5); //声明一个类对象并初始化

cout return 0;

}

当一个类中没有private成员和protected成员时,也没有虚函数,并且不是从

其他类中派生出来的,可以用{}来初始化。(以后再讲解)

5.内联函数

内联函数和普通函数的区别是:内联函数是在编译过程中展开的。通常内联函

数必须简短。定义类的内联函数有两种方法:一种和C语言一样,在定义函数时

使用关键字inline。如:

inline int Box::volume()

{

return height*width*depth;

}

还有一种方法就是直接在类声明的内部定义函数体,而不是仅仅给出一个函数

原型。我们把上面的函数简化一下:

#include iostream.h

class Box

{

private:

int height,width,depth;

public:

Box(int ht,int wd,int dp)

{

height=ht;

width=wd;

depth=dp;

}

~Box();

int volume()

{

return height*width*depth;

}

};

int main()

{

Box thisbox(3,4,5); //声明一个类对象并初始化

cout return 0;

}

这样,两个函数都默认为内联函数了。


当前标题:c语言变量构造函数,C语言函数变量
分享地址:http://njwzjz.com/article/phidic.html