C++学习笔记之C++语法

一、结构体:
    注意:在C++中结构体可以包含方法,但在C中不能。
    结构体定义:
        #include <iostream>
        struct Point
        {
            int x,y;
            void OutPut()
            {
                std::cout<<x<<std::endl<<y<<std::endl;
            }
        };
    附加知识:
        1、标准输入输出流(cout/cin/err):
            需要头文件:iostream.h
            endl:相当于“/n”
        2、访问修饰符:
            public:公有的,任何地方都可以访问。
            protected:保护的,仅自己和其子类可以访问。
            private:私有的,仅自己可以访问。
        3、在结构体中:所有成员默认为public


二、类:
    注意:类中成员默认为private。
    #include <iostream>
    class Point
    {
    public:
        void Point(){}//构造函数
        void Point(int x,int y)//构造函数的重载
        {
            this->x=x;
            this->y=y;
        }
        void ~Point(){}//析构函数
        int x,y;
        void OutPut()
        {
            std::cout<<x<<std::endl<<y<<std::endl;
        }
    };
   
    1、构造函数:无返回值/方法名与类名相同。
    2、析构函数:为构造函数的取反、不能带有参数、同一个类中不能有多个析构函数。
    3、重载:方法名相同,参数列表不同,与返回值无关,与访问修饰符无关。
    4、this指针:this指针为类指向自己的一个指针。用来访问自身的成员。("->"为指针操作符)。
    5、继承/多态:
        #include <iostream>
        class Animal//基类
        {
        public:
            virturl void Eat()//虚方法
            {
                std::cout<<"Animal Eat"<<std::endl;
            }
        }
        class Monkey: public Animal//派生类
        {
        public:
            void Climbing()//扩充的方法
            {
                std::cout<<"Monkey Climbing"<<std::endl;
            }
            void Eat()//子类覆盖
            {
                std::cout<<"Monkey Eat"<<std::endl;
            }
        }
        继承:一个类(派生类)可以拥有另一个类(基类)的所有属性和方法,但有自己的扩充。这种情况可以继承。
            继承后,派生类拥有基类的所有属性和方法(但不包括private)。
        多态之一,方法覆盖:
            基类可以将方法设置为virtuarl(虚方法),让子类去覆盖。
            父类指针指向子类:
                Animal *animal;
                Monkey *monkey;
                animal = monkey;
                animal->Eat();
                结果:"Monkey Eat"。
        子类与父类构造方法的调用顺序:父类先调用,子类后调用。
        子类与父类析构方法的调用顺序:子类先调用,父类后调用。
       
三、抽象类:
    class Animal
    {
    public:
        virtual void Go()=0;//纯虚方法,拥有纯虚方法的类称之为抽象类。
    }
    1、抽象类不能实例化。
    2、继承抽象类的子类必须实现父类的抽象方法,否则自身也不能被实例化。
     class Monkey:public Animal
     {
        void Go()//实现父类虚方法
        {
            std::cout<<"猴子站着走"<<endl;
        }
     }
四、引用:
    int a=0;
    int &b=a;
    其中b为引用,引用必须在定义时进行初始化,在其他任何时候无法改变其值。
    指针与引用的区别:指针需要内存空间,引用不需要。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值