VC++学习(2)——初步掌握C++,认识VC++程序编译过程及原理

在这里插入图片描述

引出

VC++学习(2)——初步掌握C++,认识VC++程序编译过程及原理

C++是一门编程语言,他的语法标准和语言特性是全球统一的

VC++是微软在C++语言基础上加入了自己公司扩展的一些东西

VC++是基于微软开发的编译器系统(例如Visual C++ 6.0编译系统,visual studio)和windows操作系统,也就是说你离开微软的编译环境是没有办法进行VC++开发的

VC++可以简单的视为 :

C++语言+微软扩展的语法规则+微软扩展的功能特性+微软自己开发的编译环境+windows操作系统 的一个混杂的复合体


第二讲 掌握c++

c++多态

加入virtual 关键字

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

加入virtual 关键字,c++中的多态性

当C++编译器在编译的时候,发现Animal类的sleep()函数是虚函数,这个时候C++就会采用迟绑定(late binding)的技术,在运行时,依据对象的类型(在程序中,我们传递的Fish类对象的地址)来确认调用的哪一个函数,这种能力就做C++的多态性。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

纯虚函数

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

引用和指针变量的内存模型

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

源码

#include <iostream.h>

class Animal
{
public:
	Animal(int height,int weight)
	{
		cout<<"Animal 构造函数"<<endl;
	}
	~Animal()
	{
		cout<<"Animal 析构函数"<<endl;
	}


	void eat()
	{
		cout<<"eat"<<endl;
	}
	// 加virtual关键字,定义为虚函数
	virtual void sleep()
	{
		cout<<"sleep"<<endl;
	}

};


class Fish: public Animal
{
public:
	Fish():Animal(400,300),a(1) // 成功构造Animal
	{
		cout<<"fish 构造函数"<<endl;
	}
	~Fish()
	{
		cout<<"fish 析构函数"<<endl;
	}

void sleep()
	{
		cout<<"鱼睁着眼睛 sleep"<<endl;
	}

	
private:
	const int a; // 常量

};

void fn(Animal *pan)
{
	pan->sleep();
}


void main()
{
	Fish sh;
	sh.sleep();

	Animal *pan; // 指针
	pan = &sh;
	fn(pan); // 调用的animal的
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

报错

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

原因:一个类被定义了多次,例如在类A的头文件中#include"B.h",同时又在类A的cpp文件中再次#include"B.h"

解决方法:在文件头加上了"#pragma once”,防止某个头文件被多次include,保证头文件被编译一次。用#ifndef,#define,#endift也可以用来防止重定义。

#pragma once

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

编译过程

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

编译,然后链接

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


总结

VC++学习(2)——初步掌握C++,认识VC++程序编译过程及原理

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Perley620

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值