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++类与继承