VC++ 基础(一)
#include<iostream.h>
class Animal{
public://任何地方都可以访问
//构造方法:1、与类名相同。2、没有返回值。3、可以带参数
Animal(){
//cout<<"Animal construct"<<endl;
}
Animal(int height,int weight){
//cout<<"Animal construct"<<endl;
}
//析构方法:1、不允许有返回值。2、不允许带参数。用于内存的释放
~Animal(){
//cout<<"Animal deconstruct"<<endl;
}
void eat(){
cout<<"animal eat"<<endl;
}
//protected://只在自己、子类中可以访问
void sleep(){
cout<<"animal sleep"<<endl;
}
//private://只有 自己 可以访问
/*
会采用迟绑定(late binding)的技术
如果子类没有breathe函数就调用基类的,如果有就调用子类的
*/
//virtual 虚函数
virtual void breathe(){
cout<<"animal breathe"<<endl;
}
/*
virtual void breathe()=0;
纯虚函数
含有纯虚函数的类叫抽象类
只要子类实现了纯虚函数时,才能实例化。否则不能实例化子类
*/
void get();
};
void Animal::get(){
cout<<"animal get"<<endl;
}
class Fish : public Animal{//继承
public:
//向基类传参数。可以省去:Animal(175,120)就不传参数。本身的常量a必须要初始化
Fish():Animal(175,120),a(1)
{
//cout<<"Fish construct"<<endl;
}
~Fish(){
//cout<<"Fish deconstruct"<<endl;
}
//方法的覆盖。覆盖基类中的方法。
void breathe(){//与父类的 虚函数进行区别
//Animal::breathe();//声明该方法是基类中的breathe方法。::作用域标识符
cout<<"Fish bubble"<<endl;
}
private:
const int a;
};
void fn(Animal *pAn){
pAn->breathe();
}
void main(){
Fish fh;
//fh.breathe();
Animal *pAn;//声明一个指针
pAn=&fh;//把鱼的地址赋给这个指针、隐式转换
fn(pAn);//输出是Animal对象:animal breathe
int a=6;
int &b=a;
/*
b是a的一个引用,b是a的一个别名。
b指向a的地址。
b维系在特定的目标(a)上面
引用(&b)在定义的时候必须初始化。
引用一般用在传参。语义更清晰
change(x,y);
change(&a,&b){};
*/
b=6;//a的值也会改变
}
上一篇: 廖化真的是能力平庸吗?历史的真相如何?
下一篇: dwr简单应用及一个反向ajax消息推送
推荐阅读
-
JavaEE基础day02 1.定义Java中的变量 四类八种 2.变量定义和使用的注意事项 3.数据类型的转换、强制数据类型转换4.算数运算符、比较运算符、逻辑运算符、赋值运算符、三元运算符
-
Windows 7最后一个官方补丁发布:仅安全更新
-
指针&指针与数组(一)
-
一加设计师晒出木质版一加6:木材+帆布蓝 不上市有点可惜
-
一代经典!Windows 7停止维护:国内超五成用户选择留守
-
Bash脚本编程之脚本基础和bash配置文件
-
[Go] 轻量服务器框架基础TCP服务模块
-
CentOS7中防火墙的一些常用配置介绍
-
解决pyinstaller在单一文件时无法正确添加权限清单问题,(UAC,uac_admin,manifest,asInvoker,python,requireAdministrator)
-
python基础教程:dir()和__dict__属性的区别