c++ Reference--Static--namespace

来源:互联网 发布:java框架搭建 编辑:程序博客网 时间:2024/05/07 04:47

1. vector<vector<double>> v; 很复杂,但是用double& val=v[f(x)][g(x)]就可以简化了。

val=val/2+sqrt(val);


2. 传递参数 (int& a,const int& b) a是引用,可以函数内修改,但调用函数时a不可是常数而是变量,b是引用但不可修改,但调用函数时b可以是常数。

 

Static---函数,首次调用时建立变量对象。 类中,多个实例却只有一个副本。

 

namespace---避免重名,而且不用类就可以进行封装

 

类的声明实现分开,可以在修改时,避免全类都重新编译。

小于5行的代买才能从内联中获益。

 

enum Month{jan=1,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec};

enum Month{jan=1,feb=2,mar=3,apr=4,may=5,jun=6,jul=7,aug=8,sep=9,oct=10,nov=11,dec=12};

 

Month mon=feb;  //Ok

m=7;        //Error

int n=m;      //Ok

Month mon=Month(7); //Ok

Month mon=Month(9999); //What's up?

Month int_to_month(int k){

 if (k<jan||k>dec) printf("Error");

 return Month(k);

}

重名?Month::jan,Color::red.放在作用域里,或者名字加长,可在全局避免重名。

 

辅助函数:这样能把类放进名字空间,类外---避免独立方法破坏类内数据,保持接口最小化

Chroro.h

namespace Chroro{

class Data{/*...*/};

bool is_Data(int y,Data::Month m,int d){/*...*/};

Data next_Saturday(const Data& d){/*...*/}

bool leapyear(int y){/*...*/};

bool operator==(const Data& a,const Data& b);

// .....

}

 

Choro.cpp

......

いつかの夏休み

原创粉丝点击