由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - C++类的静态函数对成员函数
相关主题
请问关于c++实现singleton的问题?请问一个多线程与volatile关键字的问题。
inline function是否可以递归?[合集] which design pattern is used if a static variable insid
请问static variable init的问题?问一个简单的C++问题
问个C++编译器如何处理函数内的static 变量static 变量放在哪里?C++
c++ singleton questionsc function 在 c里调用和C++调用结果不一样
请教一个static 函数的问题C++默认的copy constructor的疑惑
我是否需要Move(C++11)?C++ 全局变量是怎么回事?
C++ Singleton HelpC++ multiple inheritance problem
相关话题的讨论汇总
话题: static话题: 函数话题: c++话题: singleton话题: 静态
进入Programming版参与讨论
1 (共1页)
q****x
发帖数: 7404
1
类里的函数:
如果访问任何成员变量,必须成员函数。
但如果这个函数只是借用名空间的辅助函数呢?不访问静态变量,也不访问成员变量的
话,声明成静态函数更好?
class A {
public:
// SayHello is a helper function.
static void SayHello() { cout << "hello world!"; }
};
int main() {
A::SayHello();
}
t****t
发帖数: 6806
2
"如果只访问静态变量,必须静态函数"
这又是哪里看来的?

【在 q****x 的大作中提到】
: 类里的函数:
: 如果访问任何成员变量,必须成员函数。
: 但如果这个函数只是借用名空间的辅助函数呢?不访问静态变量,也不访问成员变量的
: 话,声明成静态函数更好?
: class A {
: public:
: // SayHello is a helper function.
: static void SayHello() { cout << "hello world!"; }
: };
: int main() {

t*****n
发帖数: 4908
3
你最近跟c++干上了?C++ primer比较合适

【在 q****x 的大作中提到】
: 类里的函数:
: 如果访问任何成员变量,必须成员函数。
: 但如果这个函数只是借用名空间的辅助函数呢?不访问静态变量,也不访问成员变量的
: 话,声明成静态函数更好?
: class A {
: public:
: // SayHello is a helper function.
: static void SayHello() { cout << "hello world!"; }
: };
: int main() {

p***o
发帖数: 1252
4
Better get a real namespace instead of a class. C++ is not Java.

【在 q****x 的大作中提到】
: 类里的函数:
: 如果访问任何成员变量,必须成员函数。
: 但如果这个函数只是借用名空间的辅助函数呢?不访问静态变量,也不访问成员变量的
: 话,声明成静态函数更好?
: class A {
: public:
: // SayHello is a helper function.
: static void SayHello() { cout << "hello world!"; }
: };
: int main() {

q****x
发帖数: 7404
5
呵呵,又被抓包了。那您说何时必须要定义成静态函数?写singleton或类似需要时?

【在 t****t 的大作中提到】
: "如果只访问静态变量,必须静态函数"
: 这又是哪里看来的?

N******K
发帖数: 10202
6
把一个类当函数用的时候 写一个静态成员函数 所有输入 所有输出都有
或者一些不依赖于成员变量的函数 可以写为静态函数

【在 q****x 的大作中提到】
: 呵呵,又被抓包了。那您说何时必须要定义成静态函数?写singleton或类似需要时?
N******K
发帖数: 10202
7
劝你还是学java 别在这丢人了

【在 q****x 的大作中提到】
: 类里的函数:
: 如果访问任何成员变量,必须成员函数。
: 但如果这个函数只是借用名空间的辅助函数呢?不访问静态变量,也不访问成员变量的
: 话,声明成静态函数更好?
: class A {
: public:
: // SayHello is a helper function.
: static void SayHello() { cout << "hello world!"; }
: };
: int main() {

q****x
发帖数: 7404
8
我才疏学浅,可你也别答非所问啊。

【在 N******K 的大作中提到】
: 劝你还是学java 别在这丢人了
g*********e
发帖数: 14401
9
当然设成静态。这样你就可以随时call it. 跟namespace里的函数类似。
要不还得创造个obj

【在 q****x 的大作中提到】
: 类里的函数:
: 如果访问任何成员变量,必须成员函数。
: 但如果这个函数只是借用名空间的辅助函数呢?不访问静态变量,也不访问成员变量的
: 话,声明成静态函数更好?
: class A {
: public:
: // SayHello is a helper function.
: static void SayHello() { cout << "hello world!"; }
: };
: int main() {

g*********e
发帖数: 14401
10
相当于utility function。
但要注意static function不能用到static member variable 否则哪天你想搞
multithreading了会出问题
相关主题
请教一个static 函数的问题请问一个多线程与volatile关键字的问题。
我是否需要Move(C++11)?[合集] which design pattern is used if a static variable insid
C++ Singleton Help问一个简单的C++问题
进入Programming版参与讨论
t****t
发帖数: 6806
11
语法上没有什么时候是"必须"定义静态函数的.

【在 q****x 的大作中提到】
: 呵呵,又被抓包了。那您说何时必须要定义成静态函数?写singleton或类似需要时?
w******w
发帖数: 126
12
有时候也是写代码的人图方便 直接用class name 当作 namespace 来用.
懒着call 一个函数after 创建一个obj. Singleton 是用static 函数 跟 static 变量
的一个实际应用.
^_^
w******w
发帖数: 126
13
我不是很确定 在多线程下 static fuction 用 static member variable 会不会出问
题.
但是我想在 新的 C++ 11x 下 singleton 用到static 的 class 的 obj , 应该是
safe的. 不用加锁啥的.
貌似新的编译器能保证只能创建一个实例.

【在 g*********e 的大作中提到】
: 相当于utility function。
: 但要注意static function不能用到static member variable 否则哪天你想搞
: multithreading了会出问题

g*********e
发帖数: 14401
14

多个thread share一个static variable 肯定要出问题。除非是有意要这么做并且加锁。
cxx 11 有static class的feature? 前几天看到一个static if 震惊了

【在 w******w 的大作中提到】
: 我不是很确定 在多线程下 static fuction 用 static member variable 会不会出问
: 题.
: 但是我想在 新的 C++ 11x 下 singleton 用到static 的 class 的 obj , 应该是
: safe的. 不用加锁啥的.
: 貌似新的编译器能保证只能创建一个实例.

w******w
发帖数: 126
15

锁。
哦 maybe 你误解我的意思了.
我的意思是说支持 C++ 11x 的新编译器里面, 当你实现 singleton的时候.
1. 你用 static function
2. 你在这个 static function 里面做类似这样的操作
....
static Singleton & getInstance()
{
static Singleton s;
return s;
}
....
static Singleton s; 这里之前没有加锁的必要. 如果是旧的编译器起码要加上
mutex 来实现所谓的 thread safe, 当然就算加上 mutex 也未必能100% 实现thread
safe. 这是另一个话题. ^_^
但是在新的编译器下 static Singleton s; 这个是thread safe的 . 不用加 mutex 就
可以实现thread safe的 Singleton.
C++ 新标准里面当然木有 static class 这样的 feature.
不知道我解释的清楚不? ^_^

【在 g*********e 的大作中提到】
:
: 多个thread share一个static variable 肯定要出问题。除非是有意要这么做并且加锁。
: cxx 11 有static class的feature? 前几天看到一个static if 震惊了

g*********e
发帖数: 14401
16

清楚了
that's too bad。 把c++弄得像高级语言一样了

【在 w******w 的大作中提到】
:
: 锁。
: 哦 maybe 你误解我的意思了.
: 我的意思是说支持 C++ 11x 的新编译器里面, 当你实现 singleton的时候.
: 1. 你用 static function
: 2. 你在这个 static function 里面做类似这样的操作
: ....
: static Singleton & getInstance()
: {
: static Singleton s;

q****x
发帖数: 7404
17
所以这个thread-safe是取决于编译器的?支持C++11的编译器required to have this
feature, or nice to have?

【在 w******w 的大作中提到】
:
: 锁。
: 哦 maybe 你误解我的意思了.
: 我的意思是说支持 C++ 11x 的新编译器里面, 当你实现 singleton的时候.
: 1. 你用 static function
: 2. 你在这个 static function 里面做类似这样的操作
: ....
: static Singleton & getInstance()
: {
: static Singleton s;

1 (共1页)
进入Programming版参与讨论
相关主题
C++ multiple inheritance problemc++ singleton questions
C++ 有现成的 hashtable 库吗?请教一个static 函数的问题
很想了解的一个C#疑问我是否需要Move(C++11)?
[分享]:一篇文章讲通一半Java《面向对象一家人》C++ Singleton Help
请问关于c++实现singleton的问题?请问一个多线程与volatile关键字的问题。
inline function是否可以递归?[合集] which design pattern is used if a static variable insid
请问static variable init的问题?问一个简单的C++问题
问个C++编译器如何处理函数内的static 变量static 变量放在哪里?C++
相关话题的讨论汇总
话题: static话题: 函数话题: c++话题: singleton话题: 静态