C++笔记-4-c++类与继承

C++笔记-4-c++类与继承



前言

自学笔记,没有历史知识铺垫(省略百度部分)C++笔记-4-c++类与继承


一、类 Class 、构造、析构函数

#include <iostream>
using namespace std;

class User
{

public:
    // 构造函数
    User(string nameArg, int ageArg)
    {
        name = nameArg;
        age = ageArg;
    }
    
    // 构造函数(便捷赋值写法)
    /*
    User(string nameArg, int ageArg):name(nameArg),age(ageArg)
    {
        cout << "初始化成功" << endl;
    }
    */

    // 构造函数 声明成员函数(外部实现写法) 
    User(string nameArg);

    // 析构函数
    ~User(void){
        cout << "销毁user" << endl;
    }
    // 声明成员函数(外部实现)
    void printName();
    void printUserInfo()
    {
        cout << "name:" << name << ",age:" << age << endl;
    }

private:
    string name;
    int age;
};

// 外部实现构造
User::User(string nameArg)
{
    name = nameArg;
    age = 0;
}

// 外部实现成员函数
void User::printName()
{
    cout << name << endl;
}

int main()
{
    // 堆中创建对象
    User *user1 = new User("张三", 13);
    user1->printUserInfo();
    // 堆中创建对象需要销毁,防止内存泄漏
    delete user1;
    user1 = NULL;

    // 栈中创建对象 无需delete销毁,自动释放内存
    User user2("李四", 15);
    user2.printUserInfo();
    user2.printName();
}

// 执行结果
name:张三,age:13
销毁user
name:李四,age:15
李四
销毁user

拷贝构造和拷贝赋值

User a=new User();
User b=a; //拷贝构造(b初始化时指向a,浅拷贝)
User c; 
c=a; // 拷贝赋值(a和c在此前都以初始化完成,此处c为深层拷贝赋值)

二、继承

class Fruit
{
protected:
    string name;
    string color;

public:
    void printf()
    {
        cout << color << "的" << name << endl;
    }
    ~Fruit(){
        cout << "水果销毁成功" << endl;
    }
};

class Apple : public Fruit
{
public:
    Apple(string name_a, string color_a)
    {
        name = name_a;
        color = color_a;
    }
};

class Plum : public Fruit
{
public:
    Plum(string name_a, string color_a)
    {
        name = name_a;
        color = color_a;
    }
};

int main()
{
    Apple apple("苹果", "绿色");
    apple.printf();

    Plum plum("李子", "青色");
    plum.printf();

    Fruit *fruit_plum = new Plum("李子", "紫色");
    fruit_plum->printf();
    delete fruit_plum;
    fruit_plum = nullptr;

    return 0;
}

// 执行结果
绿色的苹果
青色的李子
紫色的李子
水果销毁成功
水果销毁成功
水果销毁成功

总结

本章主要为C++笔记-4-c++类与继承

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值