| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1964 人关注过本帖, 1 人收藏
标题:一个关于C++静态成员函数与内联函数的问题
只看楼主 加入收藏
rxyknight
该用户已被删除
收藏(1)
已结贴  问题点数:20 回复次数:2 
一个关于C++静态成员函数与内联函数的问题
提示: 作者被禁止或删除 内容自动屏蔽
搜索更多相关主题的帖子: 内联 函数 静态 成员 
2010-04-28 13:42
最近不在
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:204
专家分:842
注 册:2010-2-28
收藏
得分:10 
他不是说多文件容易出错吗?
1.cpp
int fun()
{
    static int a = 10;
    a++;
    return a;
}   
int main()
{
    //fun();
    cout<<fun()<<endl;
   
    return 0;
}

11.cpp
static int a = 1;
int fun(int a);
12.cpp
extern int a;//这个时候a非11.cpp中的a,要是外部变量的话,去掉11.cpp中的static。因此static有一种用法就是多个文件中都有a,
              //如果此文件中的a加上了static,那么该文件的a,只供该文件使用,别的文件彼a非此a;
 int fun (int a)
{
     return a + 1 ;   
}

如果是类里面,由于静态成员为类的公用变量,在第一次使用时就被初始化,所有的对象使用的是同一static成员,一般要用静态方法(函数)使用静态成员。(静态函数是不是所有对象公用同一个,我不是很清楚,应该跟静态成员类似吧)。

如果是函数前面有staitc修饰,那该函数为静态全局函数,与不加static的区别在于,只能在该文件中使用,用法与上面提到的静态成员类似。

还要注意的一点,就是static的作用域,
mian()
{
    for()
    {
        static int a;
    }
}
这种情况下的话static也为全局变量,只是在for的外面不能使用。

关于内联函数的话就是把函数的定义直接拿到需要使用该函数的地方,如果是普通全局函数并没什么问题,可要是静态函数的话,那么在调用静态函数的地方就要共用同一份内容,感觉会有问题。大概就是这么理解吧,部分问题遇到过,实践过,部分猜测。请识别!
2010-04-28 14:52
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
收藏
得分:10 
回复 楼主 rxyknight
你用的是vc6.0吧,在c++中完全没有必要用内联函数,因为编译器根本不会真的去处理inline这个命令,
就是说,编译器是对内联函数的显式声明只是进行了一个伪处理,实际上根本就没有把函数真的内联进去。
因此,一般不会出错。
但是你要是把函数体在函数定义声明时直接给出的话,也就是隐式内联,那么就有可能出现错误。
这种错误,不一定编译不了,更致命的是它能通过编译,但是做的确实不合法的数据引用。

南国利剑
2010-04-29 12:35
快速回复:一个关于C++静态成员函数与内联函数的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014163 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved