结构体

C语言中的结构体是不能有函数和构造函数的,但是C++中的结构体是可以有函数的。

事实上C++中的类也是由构造函数发展而来的。

有了构造函数,就可以对结构体中的变量进行简单的初始化。

以下是一种初始化方法:

#include <IOSTREAM>
using namespace std;

typedef struct AVRNode
{
	double a;
	double z;
	AVRNode(){}
	AVRNode(double& e,double zc=12):a(e),z(zc){}

}AVRNode,*AVR;


int main()
{
	double ac=13;
	struct AVRNode *t;
	t=new AVRNode(ac);
	cout<<t->a<<endl;
	return 0;
}
这里new  了一个结构体,new一个结构体与new一个对象的方法是一样的。

注意这里给结构体中的变量a赋值的时候,结构体必须是一个指针,否则会出现语法错误。因为new返回的是一个指针

new创建的对象,要用delete结束其生命周期,否则一直存在。

new创建对象与直接定义来创建对象的区别在于:

new创建对象是在堆上进行的,而直接定义对象是在栈上进行的。栈时在程序运行前就分配好的,不需要自己释放,而堆是在程序运行的时候分配的,得自己释放。由于堆的内存比较大,所以new对象可以很好地利用空间,但是还要在一定时候回收内存,所以比较麻烦。直接定义的方式能使得程序结构清楚,容易理解,但是受内存限制较大,在递归的时候容易发生内存溢出.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值