栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++的基础学习笔记(一)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++的基础学习笔记(一)

类用于指定对象的格式,它包含了数据表明的手法和用于处理数据的方法。类中的数据和方法称为类的成员。简单的理解就是‘类’是同一类对象的命名。例如

class Dog{//定义一个Dog的抽象类,其中一条狗的名字,年龄,体重这些属性就是它的成员
	public: 
	string name;
	int age;
	int weight;
};
类中实例化对象的方法

1)从栈中实例化对象
例如:Dog dog;
2)从堆中实例化对象(需要手动释放空间)
例如:Dog *dog;
内存这方面有点类似c语言中的管理方法,也有点不同,在c语言中要将数据存放在堆区中需要用malloc函数。

构造函数和析构函数 构造函数

构造函数在对象实例化时被系统自动调用,仅且调用一次。
1)构造函数必须与类名同名;
2)可以重载;
3)类名()可以加参数;
4)没有返回类型,即使是void也不行。

构造函数的定义

类名::类名
例:

Dog::Dog(){}
析构函数

与构造函数相反,在对象结束其生命周期时系统自动执行析构函数
1)析构函数的格式为~类名();
2)调用时释放内存;
3)~类名()不能加参数;
4)没有返回值,即使是void也不行。

析构函数的定义

类名::~类名()
例:

Dog::~Dog(){}
继承

继承允许依据一个类来定义另外一个类
新创建的类被成为派生类,而已有的类叫做基类。

定义继承格式如下:

class derived-class:class-specifier base-class
derived-class是定义的派生类名称
base-class是已有的基类名称

继承成员分类

1、公有继承(public):当一个类派生继承公有基类时,基类的公有成员也是派生类的公有成员。
2、保护继承(protected):当一个类派生继承保护基类时,基类的公有和保护成员将成为派生类的保护成员。
3、私有继承():当一个类派生继承私有基类时,基类的私有成员不能直接被派生类访问,但是可以通过调用基类的公有和保护成员来访问。

#include 
#include 
using namespace std;
class Animal{
    private:
    int age;
    public:
    string color;

};
class Dog:public Animal{
    private:
    public:
    string name;
};

int main(){
    Dog dog;
   dog.color="yellow";
   dog.name="旺财";
   cout<<"名称:"< 
重载 
函数重载 
#include 
#include 
using namespace std;
class Dog
{
public:
	string name;
	void getWeight(int weight){
		count<<""< 
多态 

形成多态的三个条件:
1、必须存在继承关系;
2、继承关系必须有同名虚函数(其中虚函数是在基类中使用关键字 virtual 声明的函数,在派 生类中重新定义基类中定义的虚函数时,会告诉编译器不要静态链接到该函数);
3、存在基类类型的指针或者引用,通过该指针或引用调用函数。

虚函数

是在基类中使用关键字 virtual 声明的函数。在派生类中重新定义基类中定义的虚函数时, 会告诉编译器不要静态链接到该函数。我们想要的是在程序中任意点可以根据所调用的对象类 型来选择调用的函数,这种操作被称为动态链接,或后期绑定。虚函数声明如下:virtual ReturnType FunctionName(Parameter) 虚函数必须实现,如果不实现,编译器将报错。

纯虚函数

若在基类中定义虚函数,以便在派生类中重新定义该函数更好地适用于对象,但是您在基 类中又不能对虚函数给出有意义的实现,这个时候就会用到纯虚函数。纯虚函数声明如下: virtual void funtion1()=0; 纯虚函数一定没有定义,纯虚函数用来规范派生类的行为,即接口。 包含纯虚函数的类是抽象类,抽象类不能定义实例,但可以声明指向实现该抽象类的具体类的 指针或引用。

#include 
#include 
using namespace std;
class Animal{
    public:
    virtual void run();//定义一个虚函数

};
class Dog:public Animal{
    
    public:
    void run();
    
};
class Cat:public Animal{
    public:
    void run();
};
void Dog::run(){
    cout << "狗的方法"<< endl;
}
void Cat::run(){
    cout << "猫的方法"<< endl;
}
int main(){
    Animal *animal;//声明一个Animal的指针对象 没有实体化它
   Dog dog;//实体化一个Dog的对象
   Cat cat;//实体化一个Cat的对象
   animal=&dog;//指针对象指向实体化的dog对象的地址
   animal->run();//调用run方法
   animal=&cat;//指针对象指向实体化的cat对象的地址
   animal->run();//调用run方法
    return 0;
}
数据封装

数据封装是一种把数据和操作数据的函数捆绑在一起的机制

#include 
#include 
using namespace std;
class Dog{
    public:
    string name;
    Dog(int i=0){
        totle=i;
    }
    void addFood(int number){
        this->totle=this->totle+number;
    }
    int getFood(){
        return this->totle;
    }
    private:
     int totle;
};
int main(){
    Dog dog;
    dog.addFood(5);
    cout<<"第一次喂食:"< 

当一个类继承后就可以通过继承公有的数据封装来改变,私有继承的数值。

接口(抽象类)

如果类中至少有一个函数被声明为纯虚函数,则这个类就是一个抽象类。

#include 
#include 
using namespace std;
//定义一个Animal的抽象类型
class Animal{
    public:
    virtual void run()=0;//定义一个run()的纯虚函数
};
class Cat{
    public:
    void run(){//
        cout<<"猫的方法"<
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/291222.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号