前言
c++里创建对象的两种方式,也对应着对对象的两种使用方式。
一、创建一个有名字的对象
#include <iostream>
#include <string>
using namespace std;
class student
{
public:
int ag;
int nam;
student(int age, int name);
};
student::student(int age, int name):ag(age),nam(name)
{
cout << "构造函数的参数化列表" << endl;
}
int main()
{
student s(10,10);
student *p=&s;
cout<<s.ag<<s.nam<<endl;
cout << p->ag << p->nam<<endl;
return 0;
}
此时我们发现在定义对象指针的时候指针的类型为类名,而且对象有一个名字为s,同时有个类型为student的指针p指向s,这个时候我们使用该对象的方法有两种一种是使用对象名加点,类似于结构体变量;另一种是通过对象指针->来使用该对象的成员变量和成员函数。 注意此时给对象分配的内存是在栈里面的,栈是由程序自动管理的,因此对象所占的内存空间不需要我们释放。
二、使用new关键字和delete关键字创建和删除对象
#include <iostream>
#include <string>
using namespace std;
class student
{
public:
int ag;
int nam;
student(int age, int name);
};
student::student(int age, int name):ag(age),nam(name)
{
cout << "构造函数的参数化列表" << endl;
}
int main()
{
student *q=new student(20,20);
cout<<q->ag<<q->nam<<endl;
return 0;
}
注意此时我们创建的对象并没有具体的对象名,唯一能找到该对象的只有一个指向该对象的指针q,因此我们对该对象内的成员变量和成员函数的使用都是通过该指针完成,但是此时对象的内存分配是在堆上面,堆是由我们程序员自己管理的,为了防止无效内存占用,有些对象我们使用完之后要主动通过delete关键字释放掉它。
总结
弄懂了对象指针和对象名的区别,,奥里给
|