学习C++在windows下窗口应用程序开发(二)
2018-03-07 15:38
267 查看
第二节课回顾了一些C++的基础内容,主要是从C++的封装、继承和多态三个方面来讲述,自诩C++基础还算可以的我在看视频的时候一脸懵逼,我是谁?我在哪儿??我在做什么???老师说的这些我怎么好像完全没有听过呢!!!还是把他们写下来记录一下,加深印象!!!
——————————————分割线——————————————————————————————
1.C++中允许结构体之中存在函数,这在C语言中是不允许的,在C++的结构体中编写函数,在结构体的外部是可以创建实例调用的2.C++中的类(class)和结构体(struct)在某种意义上是可以通用的,他们的不同点是类中的方法缺省为private类型的,而结构体中的方法缺省为public类型,不做特殊说明外部类是可以调用的3.构造函数最重要的作用是创建对象本身,一个类中如果没有构造函数,那么它是不可以创建任何对象的,我们在创建一个类时经常不写构造函数,那么C++就会为我们提供一个缺省的构造函数,这个函数在我们可见的代码中并不会显示,但它存在4.析构函数和构造函数是配对使用的,它是“反向”的构造函数,不允许有返回值,用于回收对象所占有的内存空间,在对象生命周期结束时发挥作用,一个类中可以有多个构造函数,但是只能有一个析构函数5.this指针是一个隐含的指针,它是指向对象本身,代表了对象的地址,举个例子:
练习代码如下:
下节课就开始MFC了!!!加油加油加油!!!!!
——————————————分割线——————————————————————————————
1.C++中允许结构体之中存在函数,这在C语言中是不允许的,在C++的结构体中编写函数,在结构体的外部是可以创建实例调用的2.C++中的类(class)和结构体(struct)在某种意义上是可以通用的,他们的不同点是类中的方法缺省为private类型的,而结构体中的方法缺省为public类型,不做特殊说明外部类是可以调用的3.构造函数最重要的作用是创建对象本身,一个类中如果没有构造函数,那么它是不可以创建任何对象的,我们在创建一个类时经常不写构造函数,那么C++就会为我们提供一个缺省的构造函数,这个函数在我们可见的代码中并不会显示,但它存在4.析构函数和构造函数是配对使用的,它是“反向”的构造函数,不允许有返回值,用于回收对象所占有的内存空间,在对象生命周期结束时发挥作用,一个类中可以有多个构造函数,但是只能有一个析构函数5.this指针是一个隐含的指针,它是指向对象本身,代表了对象的地址,举个例子:
#include <iostream> using namespace std; //struct Point class Point { public: int x; //x坐标 int y; //y坐标 /*void init() //初始化 { x = 0; y = 0; }*/ Point() //构造函数 { x = 0; y = 0; } Point(int a, int b) //有参数的构造函数,函数重载 { x = a; y = b; } ~Point() //析构函数 { } void output() { cout << x << endl << y << endl; } void output(int x,int y) //重载 { this->x = x; //this指针,指向当前的对象 this->y = y; } }; void main() { Point pt(3,3); //pt.output(5, 5); //pt.init(); //pt.x = 5; //pt.y = 5; //cout << pt.x << endl << pt.y << endl; pt.output(); system("pause"); }这个小程序用于输出x,y的值,那么我们在类中定义了output()这样一个有参函数,我们把形参也写为x和y,在函数体中就会出现x=x;y=y;的问题,系统识别不了,这时我们就需要this指针来告诉系统哪个才是当前对象的变量x和y6.C++的封装:C++是面向对象的编程语言,它将代码模块化,用public、protected和private三个关键字给代码规定三种不同的访问权限,以此大大提高类的安全性 C++的继承:C++的继承用符号 “ : ”表示,子类继承父类的方法,这样在写代码的时候减少了代码的冗余,提高了代码的重用性 C++的多态:C++的多态是利用函数的重载和覆盖,其中重载是在一个类实现的,覆盖是在不同的类中。严格来说函数的重载并不属于C++的多态性,它只是语言的一种特性,覆盖才是真正的多态,因为其真正意义上实现了晚绑定7.当父类的构造函数为有参时,子类的构造函数也必须有参,这是因为子类会继承父类的构造函数,而一旦我们将父类的构造函数写参数,那么缺省的构造函数就会消失,所以子类在继承时会继承父类有参的构造函数8.函数的数据类型前加virtual为虚函数,一个纯虚函数是没有函数体的(转载自http://blog.csdn.net/ybhjx/article/details/51788396)纯虚函数(pure virtual) C++中包含纯虚函数的类,被称为是“抽象类”。抽象类不能使用new出对象,只有实现了这个纯虚函数的子类才能new出对象。 C++中的纯虚函数更像是“只提供申明,没有实现”,是对子类的约束,是“接口继承”。 C++中的纯虚函数也是一种“运行时多态”。
class A { public: virtual void out1(string s)=0; //纯虚函数 virtual void out2(string s) { cout<<"A(out2):"<<s<<endl; } };9.C++和C语言中,头文件用双引号括起来是说,系统先从当前目录搜索,再从系统目录中搜索,而用单尖括号括起来是说直接从系统目录中查找,所以我们在定义了自己的头文件时要用双引号括起来
练习代码如下:
#include <iostream> using namespace std; class Animal { public: Animal(int height,int weight) //先有父类,再有子类 { cout << "Animal construct" << endl; } ~Animal() { cout << "Animal destroy" << endl; } void eat(); void sleep() { cout << "animal sleep" << endl; } void breathe() { cout << "animal breathe" << endl; } }; class Fish : public Animal //继承 { public: Fish():Animal(400,300),a(1) { cout << "Fish construct" << endl; } ~Fish() //先销毁子类,再销毁父类 { cout << "Fish destroy" << endl; } void breathe() //函数的覆盖 { //Animal::breathe(); // ::叫做作用域标识符 cout << "fish bb" << endl; } /*void test() { sleep(); breathe(); }*/ private: const int a; }; void fn(Animal *pAn) { pAn->breathe(); } void Animal::eat() { cout << "Animal eat" << endl; } int main() { Animal an(3,4); an.eat(); Fish fi; //fi.eat(); //fi.breathe(); Animal *pAn; pAn = &fi; fn(pAn); //system ("pause"); return 0; }
下节课就开始MFC了!!!加油加油加油!!!!!
相关文章推荐
- 学习C++在windows下窗口应用程序开发(三)
- 学习C++在windows下窗口应用程序开发(一)
- SilverLight商业应用程序开发---学习笔记(10)使用数据源窗口创建DataGrid
- GTK+图形化应用程序开发学习笔记(十八)—滚动窗口构件、分栏窗口构件
- windows应用程序开发系列二:windows窗口应用程序开发的步骤
- c++学习笔记,windows窗口模版
- 深入浅出Windows 10 通用应用开发学习笔记(C++) 3-1
- [C++] C++ Builder 下开发具有Windows任务栏布告区图标的应用程序
- 学习win32 API开发2-走进Windows窗口程序开发
- C++ WINDOWS API 第1章 Windows 应用程序开发入门
- GTK+图形化应用程序开发学习笔记(十八)—滚动窗口构件、分栏窗口构件
- Windows桌面应用程序(1-2nd) 学习用C++编写Windows程序
- 初步学习:Eclipse3.6开发C/C++程序(Windows下)
- Hilo: Windows 7下C++应用程序开发实战演练
- 全面学习AP应用程序和驱动程序开发C&C++
- C++ WINDOWS API 第1章 Windows 应用程序开发入门
- 使用C++开发Leap Motion应用程序——Windows下开发环境配置
- Windows中使用Python和C/C++联合开发应用程序起步(Python/C API应用)
- web开发,asp.net/c++驱动,客户应用程序开发X86windows SDK DDK/windows mobile高手/c# ,c++ coding 够全了吧,抓紧哦
- Windows中使用Python和C/C++联合开发应用程序起步