概述
第二节课回顾了一些C++的基础内容,主要是从C++的封装、继承和多态三个方面来讲述,自诩C++基础还算可以的我在看视频的时候一脸懵逼,我是谁?我在哪儿??我在做什么???老师说的这些我怎么好像完全没有听过呢!!!还是把他们写下来记录一下,加深印象!!!
——————————————分割线——————————————————————————————
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和y
6.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下窗口应用程序开发(二)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复