1.int f(int)与int f(int&)不重载
2.dynamic_cast使用必须有虚函数
3.禁止函数重载的书写方式:extern ""C""{ int f();}
4.static int a=100;静态变量只有常整型才能在类内初始化
5.32位下,int为4个字节
6.this是关键字也是保留字
7.inline建议放在头文件中,只有实现同时存在时才建议,永远只是建议,inline放在定义里才有效
8.类的临时变量默认为常量,A().num()
9.构造函数与析构函数不能加const修饰
10.赋值要注意自我赋值
11.operator new delete一定会是静态的,默认含有static,void* operator new(size_t)和void operator delete(void*,size_t)
12.前置++表示先加后使用,后置++表示先使用后加
13.没有友元数据这一概念,友元类的实质是友元函数
14.static类型转换不能为对象
15.虚指针位于最前面
16.volatile
17.多态的实现机制,静态多态:模板与重载;动态多态:虚机制
18.运算符重载细节代码
#include <iostream>
using namespace std;
class A{
public:
int a;
int b[10];
public:
A(){
a=1;
for(int i=0;i<10;i++){
b[i]=i;
}
}
int operator[](int i)const{
return b[i];
}
int& operator[](int i){
return b[i];
}
A& operator++(){//前置++
a++;
return (*this);
}
A operator++(int){//后置++
A temp(*this);
a++;
return temp;
}
A* operator->(){//要么返回指针类型,要么自定义类型并且该类型中operator了->
return this;
}
void f(){
cout<<666;
}
void* operator new(size_t){//一定会是static
}
void operator delete(void*,size_t){//static
}
};
istream& operator>>(istream& in,A&a){//必须类外实现!!!
int c;
in>>c;
a.a=c;
return in;
}
ostream& operator<<(ostream& out,const A&a){//必须类外实现!!!
out<<a.a<<endl;
return out;
}
int main(){
A a;
cout<<a[1];
a++;
cout<<a[1];
//cout<<(++a)<<endl;
cout<<a;
a->f();
return 0;
}