C++类与对象

对象的生命周期

申请内存 -> 初始化列表 ->构造函数 -> 使用对象 -> 析构函数 -> 释放内存

对象实例化

1、从栈中实例化

2、从堆中实例化

#include 
using namespace std;
class Node{
    int x;
    int y;
};
int main(){
    //instantiation from stack
    Node node1;
    Node node2[20];

    //instantiation from heap
    Node* p1 = new Node();
    Node* p2 = new Node[20];

    delete p1;
    delete []p2;
    
    return 0;
}

构造函数

1、对象实例化时会自动调用构造函数,或显示调用

2、构造函数只是为对象进行初始化,并没有分配内存;当对象实例化后,可以再次使用构造函数为其进行初始化

3、初始化列表:在构造函数之前执行,可以为const常量赋初值

4、在初始化对象数组时,只能使用无参的构造函数,不能调用有参的构造函数,可以实例化后再次调用构造函数初始化

#include 
using namespace std;
class Node{
public:
    Node():x(0),y(0){//initial list
        cout<<"no parameter"<

5、拷贝构造函数

系统有默认的拷贝构造函数,自定义时,形式与构造函数相同,只是参数传入一个const修饰的对象的引用即可

#include 
using namespace std;
class Node{
public:
    Node():x(0),y(0){//initial list
        cout<<"no parameter"<

析构函数

在对象销毁时自动调用,没有参数,没有返回值,不能重载

#include 
using namespace std;
class Node{
public:
    Node():x(0),y(0){//initial list
        s = new char[20];
        cout<<"constructor with no parameter"<

 

你可能感兴趣的:(C++)