C++小甲鱼个人简要笔记
封装、继承,抽象、多态
cin.ignore&&cin.getline()
cin.peek()&cin.get();
cin.read()&cin.gcount()
cin.write(buf,10);
cout.preicious();
ios::in
ios::out
ios::binary
ios::app
ios::trunk
ios::nocreate
fp.seekg(ios::beg)
cin.ignore(100,‘\n’)
cin.eof();
cin.fail();
cin.bad();
cin.good();
基类必须在子类前初始化
子类构造():基类构造()
class Pig:public Animal{}继承的方法和属性的访问级别不发生任何改变
保护继承:将基类的访问级别改为protected,如果原来是public的话。这个子类的外部代码无法用子类去访问基类的public
private:从基类继承来的每个成员都当成private来看,只有这个子类能使用从基类继承的元素
进行方法覆盖时要在子类里进行进一步的声明
继承之后不能重载父类方法
静态方法、成员:一个只在创建或删除时才允许访问;这个成员属于该类,而不是只属于该类的对象(没有创建对象也可以调用方法)
(静态方法只能访问静态成员)
堆(new)/栈(局部变量、函数参数)/自由存储区(malloc)/常量存储区/静态存储区
this指针:私有成员
静态方法无法访问this指针(全体成员共享)
在类的外部为静态属 性做出声明(分配内存)
不声明变量直接赋值
int*pointer=new int;
*pointer=100;
delete pointer;
一般来说什么指针调用什么方法
Pet*p=new Cat();
Pet *p=new Dog();
p->play();
运行时类型和编译时类型不一样
virtual void play();//基类方法
使用虚方法使调用方法时根据指针在运行时类型调用相应方法(Dog、Cat)
子类方法继承虚方法必须也是虚方法
abstract方法必不可少,但在基类中不实现
abstract方法:virtual void play()=0;
编译时的多态性:方法重载(覆盖必须要有virtual)(运行速度快)
运行时的多态性:虚函数(高度灵活和抽象)
析构器都应是虚方法
int operator+(int a,int b){
return a+b;
}
.
.*
::
sizeof
?:
以上五种运算符不能重载
运算符重载参数个数要看是否在类内重载(类的成员函数)
如果在类外实现,则要指定为友元函数
虚继承
class example:virtual public teach{}
编译时出错、运行时出错
运用climits头文件:SHORT_MAX\SHORT_MIN\USHORT_MAX
#include
catch(int i)
catch()
catch(bool a)
try…catch()…(try块中throw语句后所有内容不会执行)
unsigned long returnfACTORIAL(INT NUM)throw(const char *);
动态内存:
只有地址\没有名字的内存块构成,在程序运行期间动态分配
int *i=new int;
int *x=new int[10];
int count=10;
int *x=new int[count];
delete x[];
注释:
#if 0
#endif
函数指针
int(*p)(); p=func; (*p)()
在对象成员中有指针时,可能会导致一块内存被重复释放:
1.重载赋值运算符
Myclass m1;
Myclass m2;
m2=m1;
2.副本构造器:Myclass(const Myclass &rhs):拷贝构造
Myclass m1;
Myclass m2=m1;
基类指针可以引用派生类对象,而派生类对象不可以引用基类对象
const_cast<MyClass*>();
dynamic_cast<*>(company )
#ifndef LOVE_FISHC
#define LOVE_FISHC
class rational{};
#endif