C++,类的对象 (栈上的和堆上的),语法练习

本文通过一个具体的C++程序示例介绍了如何定义一个学生类,并演示了如何使用栈和堆来分配对象内存,以及成员变量的存储方式。此外,还展示了如何通过指针和直接调用的方式来操作这些对象。
#include <iostream>
#include <string>
using namespace std;

// 定义一个类 Student
class Student
{

private:
	string name;
	int    age;
	string address;
	
public:
	// 存
	void setname(string s){	name = s;}
	void setage(int y){age = y;	}
	void setaddress(string add){address = add;}
    
	// 取
	string getname(){return name;}
	int getage(){return age;}
	string getaddress(){return address;}


protected:

};


//--- main -------------
int main(void)
{
	 Student x; // x在栈上,快,容量小,自动释放,自动清理
 	 x.setname("柳絮飘");
	 x.setage(22);
	 x.setaddress("学明路115号");     
	 cout<<"sizeof(x) = "<<sizeof(x)<<endl;  //36 字节
	 cout<<"姓名: "<<x.getname()<<"              年龄: "<<x.getage()<<"           住址: "<<x.getaddress()<<endl;

     cout<<endl<<endl<<endl;
	 
	 Student *p = NULL;
	 p = new Student();  // p 在堆上申请的空间   无名对象 
	 p->setname("王志民");
	 p->setage(21);
	 p->setaddress("建设路22号");
	 cout<<"sizeof(p) = "<<sizeof(p)<<endl;  //4字节	 
	 cout<<"姓名: "<<p->getname()<<"              年龄: "<<p->getage()<<"           住址: "<<p->getaddress()<<endl; 
	 
    
      cout<<endl<<endl<<endl;

	 Student *s = NULL;
	 s = &x;            // s 指向栈里的对象 x 

	 cout<<"sizeof(s) = "<<sizeof(s)<<endl;  //4字节	 
	 cout<<"姓名: "<<s->getname()<<"              年龄: "<<s->getage()<<"           住址: "<<s->getaddress()<<endl; 


// --------------------
	return 0;
}










 

 

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值