[新闻八卦] [转载]主要C++流派,看看你是哪一流

geminiyellow 2009-03-04
流派很多啊,要入门不容易啊。
frenchmay 2009-09-02
7. Java流:全面使用Java的风格,不能容许任何全局成员,但允许使用STL的集合类,写很多叫Factory的类。
night_stalker 2009-09-02
不在 namespace 下面的类也是全局成员 ……
RednaxelaFX 2009-09-02
night_stalker 写道
不在 namespace 下面的类也是全局成员 ……

啊,说起namespace,我一直没弄明白一个只有静态成员的类跟一组用namespace包裹的函数在实际用的时候有多大区别?
night_stalker 2009-09-02
RednaxelaFX 写道
night_stalker 写道
不在 namespace 下面的类也是全局成员 ……

啊,说起namespace,我一直没弄明白一个只有静态成员的类跟一组用namespace包裹的函数在实际用的时候有多大区别?


namespace 可以 using,静态成员不能。
B.S. 爷爷也教导我们,namespace 和 static 也是敌我识别系统的参照因子之一。
RednaxelaFX 2009-09-02
night_stalker 写道
namespace 可以 using,静态成员不能。
B.S. 爷爷也教导我们,namespace 和 static 也是敌我识别系统的参照因子之一。

有道理,可以using……
B.S.爷爷是怎么说敌我识别的,来~~
night_stalker 2009-09-02
static 成员很尴尬,声明了还要定义,定义的部分还不能写在 h 文件里;
静态成员继承时尤其是模版类的继承行为很难捉摸。namespace 的行为就简单多了,哦不,应该说没行为;
匿名 namespace 可以隐藏变量、函数于无形之中 ……

p.忘记 B.S. 爷爷在 the c++ programing language 的第几页教导我们了 ……
RednaxelaFX 2009-09-02
night_stalker 写道
static 成员很尴尬,声明了还要定义,定义的部分还不能写在 h 文件里;
静态成员继承时尤其是模版类的继承行为很难捉摸。namespace 的行为就简单多了,哦不,应该说没行为;
匿名 namespace 可以隐藏变量、函数于无形之中 ……

p.忘记 B.S. 爷爷在 the c++ programing language 的第几页教导我们了 ……

咦……?
h.h
#ifndef H_H
#define H_H

#include <iostream>

struct H {
    static void Ecchi() { std::cout << "Ecchi!" << std::endl; }
};

#endif // ifndef H_H

h.cpp
#include "h.h"

int main() {
    H::Ecchi();
    return 0;
}

我没印象看到static不能写在h文件里诶。上面这玩儿编译也通过了 =v=

刚翻了下,static member是在10.2.4,不过貌似还有别的地方说的。回头再看看……
night_stalker 2009-09-02
那个算 inline 函数了,所以可以 ……

改成这样就容易出事了:
#ifndef H_H
#define H_H

#include <iostream>

struct H {
    static void Ecchi();
};

void H::Ecchi() { std::cout << "Ecchi!" << std::endl; }

#endif // ifndef H_H


包含一遍没所谓,如果有两个 cpp 都 include 了这个头文件就会报重复定义的错误。
RednaxelaFX 2009-09-02
night_stalker 写道
包含一遍没所谓,如果有两个 cpp 都 include 了这个头文件就会报重复定义的错误。

嗯不inline写确实容易出事……
Global site tag (gtag.js) - Google Analytics