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

VC++学习日志 7-22 C++基础

2006-07-22 22:47 791 查看
输入,输出:
头文件:#include <iostream.h>
int i;
cin>>i;
cout<<i;
C++中结构体可以包含成员函数。c中不可以,结构体是一种特殊的类。在C++中类和结构体可以通用。区别:在类中,所有的成员缺省的是private,而在结构体中缺省public。

构造函数:
1.构造函数最重要的作用是创建对象本身。
2.c++规定一个类必须定义一个构造函数
3.如果没有构造函数,c++提供一个默认的构造函数(由c++编译器提供),它不带任何参数,而不做任何初始化工作。
4.只要为一个类定义了一个构造函数,则编译器都不会提供构造函数,如需则需要自己定义。

析够函数:
~类名()
{
}
1.当一个对象的生命周期结束时,其所占用的内存空间就要被回收,这个任务由析构函数来完成。
2.析够函数是“反向”的构造函数,不允许有返回值,更重要的是不能有参数,并且一个类只能有一个析构函数。
3.被系统回收或delete删除时,同样也调用析够函数。

this指针指向对象本身

定义类后面加分号!
class Animal
{
public:
void eat()
{
cout<<"animal eat"<<endl;
}
void sleep()
{
cout<<"animal sleep"<<endl;
}
}; //重要

继承时面向对象中的重要思想

class Fish : public Animal
{

};

void main()
{
Animal an;
an.eat();
Fish fh;
fh.sleep();
}

基类构造
子类构造
子类析够
基类析够

在子类当中传递基类中构造中的参数
如:
Class Animal
{
public:
int x;
int y;
Animal(x,y)
{
this->x=x;
this->y=y;
}
.....
}

class Fish : public Animal
{
public:
Fish() : Animal(400,300) //当调用构造函数的时候就给Animal的构造函数传递400和300,否则出错。
{
cout<<"fish construct"<<endl;
}
~Fish()
{
cout<<"Fish deconstruct"<<end;
}
}

可以使用构造函数对类中的常量进行初始化,如:
class Fish : public Animal
{
public:
Fish():Animal(400,300),a(1) //初始化
{
cout<<"fish construct"<<endl;
}
~Fish()
{
cout<<"fish deconstruct"<<endl;
}
private:
const int a; //常量必须初始化
}

函数的覆盖:发生在父类和子类之间。
也可以调用基类的方法。Animal::eat();

多态性:
当c++编译器在编译的时候,发现基类的一个函数时虚函数(virtual)时,就会采取迟绑定技术,在运行时,依据对象的类型来确认调用的哪一个函数,这种能力就时C++的多态性。

如果基类函数是虚函数,那么在调用时,子类有的调用子类的,子类没有的调用积累的,当然前提是传递的子类的地址。

纯虚函数
在基类中定义,如virtual void breathe() = 0;
在子类中实现。

引用:变量别名
int a=6;
int &b=a; //一旦定义,永久绑定
b=5;
指针变量需要占用内存空间,而引用不占用空间,就是一个别名,初始化的时候就维持在初始化的变量,通常使用在函数传参。避免发生值的拷贝。

在类外实现方法:
Animal::eat()
{
;
}

#include "头文件" 首先从当前路径下查找,不确定可以使用这个。
#include <头文件> 直接去系统目录下查找

防止头文件、类重复定义:
采用予编译指令符
#ifndef POINT_H_H
#define POINT_H_H
class Point
{
};
#endif
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: