VC++学习日志 7-22 C++基础
2006-07-22 22:47
851 查看
输入,输出:
头文件:#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
头文件:#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
相关文章推荐
- VC++学习日志 MFC基础
- VC++学习日志 7-23 MFC基础
- VC、C++基础学习
- 从Delphi转向VC系列学习一:C++基础知识
- 从Delphi转向VC系列学习一:C++基础知识
- C++学习日志1-基本类型
- C++学习(八)函数基础
- Objective -C语言基础学习日志(五)
- 《面向对象基础:C++实现》学习笔记之八
- C++基础学习之6 - STL解构
- C++基础学习之10 - 插件开发
- 1、C/C++基础学习
- linux c/c++ 后台开发基础之:c++日志模块
- C++基础学习8:类的定义(class)
- java基础学习日志07
- C++基础学习笔记----第一课补充(符号表)
- Symbian C++学习之——菜单基础
- C++基础学习—vector
- c++基础学习13-c++的函数模板
- POCO C++库学习和分析 -- 日志 (一)