`
myhongkongzhen
  • 浏览: 96637 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

VC++学习笔记(一) —— C++经典语法知识

阅读更多

2009年5月21号

 

VC++学习笔记(一) —— C++经典语法知识

 

声明:此方法只是用于本人所好,对您带来的不便,敬请见谅

 

C++经典语法知识学习

 

======================我是分割线============================== 

#include <iostream.h>

class Animal{
	
public:

	//对于构造函数,父子类的关系是:
	//先构造父类,再构造子类,也就是,先打印“Animal constructor”再打印“Fish constructor”
	//要先有父亲,再有孩子
	/*
	Animal(){
		cout<<"Animal constructor"<<endl;
	}
	*/
	Animal(int weight,int height){
		//cout<<"Animal constructor"<<endl;
	}
	//但是,对于析构函数,是子类先析构,父类再析构,注意这个区别
	~Animal(){
		//cout<<"Animal deconstructor"<<endl;
	}

	void eat(){
		cout<<"Animal eat"<<endl;
	}

//sleep()和breathe()两个方法是受保护的,而eat()方法是public
protected://受保护的方法,在子类中是可以访问得到的,但这些方法在外部是不可以被访问的
	void sleep(){
		cout<<"Animal sleep"<<endl;
	}

//private:
public :
	//虚拟函数关键字,如果方法前加上virtual,
	//表示此方法是虚函数,那么将不再调用Animal的breathe方法了
	//如果子类中没有此方法,那么还是会调用基类中的此方法的,当然前提是,传入的是子类的地址
	//这里体现了C++的多态性
	virtual	void breathe(){
		cout<<"Animal breathe"<<endl;
	}

	// 纯虚函数:没有函数体的函数
	//virtual void breathe()=0;
	//含有纯虚函数的泪叫做抽象类,抽象类是不能实例化对象的

	void run();//函数的原形的声明

//注意一定要写分号结尾“:”,这点与JAVA不同
};

//函数的实现
//将函数的实现拿到类的定义之外的方法
void Animal::run(){
}

/*
原来的写法
class Fish{

public:
	void eat(){
		cout<<"Fish eat"<<endl;
	}

	void sleep(){
		cout<<"Fish sleep"<<endl;
	}

	void breathe(){
		cout<<"Fish breathe"<<endl;
	}

};
*/

//c++中的继承,面向对象的机制

//Fish叫做派生类,从Animal类派生出来的一个类
class Fish : public Animal{
	//任何父类有的方法,子类中都不需要再重复的写一遍
public:

	//如果没有后面的带参的父类的构造函数,程序会报错的
	//---------------------常量的初始化
	Fish():Animal(400,300),a(1){
		//cout<<"Fish constructor"<<endl;
	}
	~Fish(){
		//cout<<"Fish deconstructor"<<endl;
	}

	void test(){
		sleep();
		//如果父类中是protected修饰的,则这里可以被访问,
		//但是,父类中是private修饰的,所以,这里也不可以访问
		//breathe();//error
	}

	//函数的覆盖:发生在父类与子类之间
	 void breathe(){

		//如果也要调用父类的这个函数
		//----作用域标识符
	    //Animal::breathe();
		cout<<"Fish breathe"<<endl;
	}
private:
	const int a;
};

//全局函数
void fn(Animal *pAn){
	pAn->breathe();
}

//引用通常用作参数传递
int change(int &a,int &b){
	//交换a和b的值的操作
	return 0 ;
}

void main(){
	
	//Animal an;
	//an.eat();
	//an.sleep();//error
	//an.breathe();//error,同样的道理
	Fish fish;
	//fish.sleep();//error,这个方法是protected的,在外部是不能被访问的
	//fish.test();//ok,在子类中,protected是可以被访问的
	//fish.breathe();

	Animal *pAn;//定义一个Animal的指针
	pAn=&fish;//将Fish实例的地址赋给Animal的指针
	fn(pAn);//调用的是Animal的breathe方法
	//但是注意,如果基类中的函数添加上了virtual关键字,表示虚函数是,将调用的是子类的breathe方法
	
	//引用的应用
    //应用相当于变量的别名
	int x = 3;
	int y = 4;
	change(x,y);
}

 

======================我是分割线============================== 

#include "Animal.h"
#include <iostream.h>

Animal::Animal(int weight,int height){
	cout<<"Animal constructor"<<endl;
}

void Animal::breathe(){
	cout<<"Animal breathe"<<endl;
}
void Animal::eat(){
	cout<<"Animal eat"<<endl;
}
void Animal::run(){
	cout<<"Animal run"<<endl;
}
//void Animal::sleep(){}
//void Animal::~Animal(){}

 

======================我是分割线============================== 

#ifndef ANIMAL_H_H
#define ANIMAL_H_H
//预定义指令符,防止多次包含头文件的情况

class Animal{
	
public:

	//对于构造函数,父子类的关系是:
	//先构造父类,再构造子类,也就是,先打印“Animal constructor”再打印“Fish constructor”
	//要先有父亲,再有孩子
	/*
	Animal(){
		cout<<"Animal constructor"<<endl;
	}
	*/
	Animal(int weight,int height);
	//但是,对于析构函数,是子类先析构,父类再析构,注意这个区别
	//~Animal();

	void eat();

//sleep()和breathe()两个方法是受保护的,而eat()方法是public
protected://受保护的方法,在子类中是可以访问得到的,但这些方法在外部是不可以被访问的
	void sleep();

//private:
public :
	//虚拟函数关键字,如果方法前加上virtual,
	//表示此方法是虚函数,那么将不再调用Animal的breathe方法了
	//如果子类中没有此方法,那么还是会调用基类中的此方法的,当然前提是,传入的是子类的地址
	//这里体现了C++的多态性
	virtual	void breathe();

	// 纯虚函数:没有函数体的函数
	//virtual void breathe()=0;
	//含有纯虚函数的泪叫做抽象类,抽象类是不能实例化对象的

	void run();//函数的原形的声明

//注意一定要写分号结尾“:”,这点与JAVA不同
};

#endif

 

======================我是分割线============================== 

#include "Animal.h"

#ifndef FISH_H_H
#define FISH_H_H

//c++中的继承,面向对象的机制

//Fish叫做派生类,从Animal类派生出来的一个类
class Fish : public Animal{
	//任何父类有的方法,子类中都不需要再重复的写一遍
public:

	//如果没有后面的带参的父类的构造函数,程序会报错的
	//---------------------常量的初始化
	Fish();
	//函数的覆盖:发生在父类与子类之间
	 void breathe();

};

#endif

 

======================我是分割线============================== 

#include "Fish.h"
#include <iostream.h>

Fish::Fish():Animal(300,400){
	cout<<"Fish constructor"<<endl;
}
void Fish::breathe(){
	cout<<"Fish breathe"<<endl;
}

//Fish::sleep(){}
//Fish::~Fish(){}

 

======================我是分割线============================== 

#include <iostream.h>

#include "Animal.h"
#include "Fish.h"

//全局函数
void fn(Animal *pAn){
	pAn->breathe();
}

//引用通常用作参数传递
int change(int &a,int &b){
	//交换a和b的值的操作
	return 0 ;
}

void main(){
	
	//Animal an;
	//an.eat();
	//an.sleep();//error
	//an.breathe();//error,同样的道理
	Fish fish;
	//fish.sleep();//error,这个方法是protected的,在外部是不能被访问的
	//fish.test();//ok,在子类中,protected是可以被访问的
	//fish.breathe();

	Animal *pAn;//定义一个Animal的指针
	pAn=&fish;//将Fish实例的地址赋给Animal的指针
	fn(pAn);//调用的是Animal的breathe方法
	//但是注意,如果基类中的函数添加上了virtual关键字,表示虚函数是,将调用的是子类的breathe方法
	
	//引用的应用
    //应用相当于变量的别名
	int x = 3;
	int y = 4;
	change(x,y);
}

 

======================我是分割线============================== 

分享到:
评论

相关推荐

    VC++学习笔记感悟

    总的来说,"VC++学习笔记感悟"这份资料不仅提供了丰富的编程技术知识,还包含了开发者的心路历程,对于正在学习或已经从事C++开发的人士来说,是一份宝贵的参考资料。通过阅读和研究这些笔记,我们可以学习到如何...

    VC++学习笔记

    【VC++学习笔记】 在VC++编程中,消息映射机制是Windows应用程序设计的核心部分,它使得消息处理函数能够与特定的消息对应起来。这主要通过一组宏来实现,包括DECLARE_MESSAGE_MAP()、BEGIN_MESSAGE_MAP()和END_...

    VC++学习笔记总结

    **VC++学习笔记总结** VC++,全称Visual C++,是Microsoft公司开发的一款集成开发环境,主要用于编写基于Windows操作系统的应用程序。它结合了C++编程语言的强大功能和微软的Visual Studio IDE(集成开发环境)的...

    JAVA学习笔记————————

    在深入探讨JAVA学习笔记之前,我们首先理解一下JAVA这一编程语言的重要性。JAVA,由Sun Microsystems公司(现已被Oracle收购)于1995年推出,是一种面向对象的、跨平台的编程语言,以其“一次编写,到处运行”的特性...

    vc++学习笔记 资料总结

    vc++学习笔记 资料总结 希望对大家有用

    web学习笔记 —— jsp基础语法

    本文将深入探讨"Web学习笔记——jsp基础语法"这一主题,重点关注JSP(JavaServer Pages)的基础知识。JSP是Java平台上的动态网页技术,它允许开发者将HTML、XML或其他标记语言与Java代码结合,以创建交互式的Web应用...

    C++基础学习笔记————网课

    个人网课学习笔记

    C++整理笔记word版——01 C++学习笔记

    C++是一种强大的面向对象编程语言,它源自C语言并扩展了其...学习这些概念是成为C++程序员的第一步。在实际编程中,还需要理解类、对象、继承、多态等面向对象编程的概念,以及函数、模板、文件操作等更高级的主题。

    Pascal转C++学习笔记——1.基本知识

    从给定的文件信息中,我们可以...综上所述,从Pascal转向C++的过程中,开发者需熟悉C++的基本语法、数据类型、表达式、转义字符以及字符与字符串常量的处理方式,这些都是编程的基础,对于深入学习和掌握C++至关重要。

    VC++学习笔记与心得

    ### VC++学习笔记与心得知识点总结 #### 一、VC++概述 - **定义与功能**:VC++(Visual C++)是一种集成开发环境(IDE),主要用于开发C和C++程序。它不仅提供了代码编辑器,还包含了编译器、调试器等一系列工具,...

    MySQL学习笔记——“语法总结”.zip

    MySQL学习笔记——“语法总结”

    Python 笔记源码——内含python后端&机器学习等.zip

    Python 笔记源码——内含python后端&机器学习等.zip Python 笔记源码——内含python后端&机器学习等.zip Python 笔记源码——内含python后端&机器学习等.zip Python 笔记源码——内含python后端&机器学习等.zip ...

    Cocos2d-x学习笔记——完全掌握C++ API与游戏项目开发.zip

    本学习笔记旨在帮助开发者全面掌握Cocos2d-x的C++ API以及游戏项目的开发流程。 一、Cocos2d-x框架基础 Cocos2d-x是Cocos2d-x系列的C++版本,它提供了丰富的图形绘制、动画制作、音频播放、物理引擎等功能。Cocos2d...

    vc++代码 学习笔记

    在压缩包中的"C-C++语言经典、实用、趣味程序设计编程百例精解-挖经验-酷勤网.htm"文件,很可能是包含了一系列的C/C++编程实例,涵盖了基础语法、数据结构、算法等多个方面,这些实例对于加深理解和巩固理论知识非常...

    【达内】听课笔记之一——C++

    C++是一种通用的编程语言,由Bjarne Stroustrup于1979年在贝尔实验室创建,作为C语言的扩展。它集成了面向过程、面向对象和泛型编程的特点...这份笔记将是你学习过程中宝贵的参考资料,帮助你在C++的世界里更上一层楼。

    MFC学习lesson 2-C++经典语法.rar

    本教程“MFC学习lesson 2 - C++经典语法”将深入探讨C++的基础语法在MFC框架中的应用。 1. **C++基础语法** C++是MFC的基础,因此理解和掌握C++的经典语法至关重要。这包括: - 变量声明与类型:了解不同数据类型...

    狂神Java学习笔记————前端入门——html、css、JavaScript学习代码

    【狂神Java学习笔记——前端入门——HTML、CSS、JavaScript学习代码】是针对初学者的一份详实的学习资料,这份笔记记录了跟随B站知名up主“遇见狂神说”的java系列视频中关于前端开发的基础内容。笔记内容不仅与视频...

    VC++2005入门经典,学习笔记

    ### VC++2005入门经典,学习笔记 ...以上是 VC++2005 入门经典学习笔记的部分内容,包含了第一章至第二章的主要知识点。这些知识点对于初学者来说非常重要,可以帮助他们理解 C++ 编程的基础概念和技术细节。

Global site tag (gtag.js) - Google Analytics