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、付费专栏及课程。

余额充值