您的位置:首页 > 编程语言 > C语言/C++

学习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指针是一个隐含的指针,它是指向对象本身,代表了对象的地址,举个例子:
#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了!!!加油加油加油!!!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: