G*A
2 楼
in-person interview
Interviewer: how to std::cout some sentences before main() function.
Me: blahblah... global variable ....blahblah
Interviewer: global variable is close, but how exactly ...?
Me: .....
Interviewer: how to std::cout some sentences before main() function.
Me: blahblah... global variable ....blahblah
Interviewer: global variable is close, but how exactly ...?
Me: .....
l*o
3 楼
我每次看着都觉得像山羊 哈哈
p*p
5 楼
void fun() { cout << "aa" << endl; }
static void *a = fun();
类似这样?
static void *a = fun();
类似这样?
t*g
6 楼
好象是有点像特别是那撮胡子
A*i
7 楼
没看懂啥意思
你可以呼叫好猫问问
你可以呼叫好猫问问
F*k
8 楼
我觉着像狼人变身
l*i
9 楼
constructor of a global object will be called before main()
class Object {
public:
Object();
};
Object::Object() {
cout << "my message\n";
}
// define a global object somewhere in .cc or .cxx or .cpp
Object obj;
int main()
{
}
This seems to be an exercise from Stroustrup's book
class Object {
public:
Object();
};
Object::Object() {
cout << "my message\n";
}
// define a global object somewhere in .cc or .cxx or .cpp
Object obj;
int main()
{
}
This seems to be an exercise from Stroustrup's book
Q*A
10 楼
lol....像!
G*A
11 楼
这个应该是interviewer想要得答案。 The class constructor of a global object。
又一次感觉自己好菜
【在 l***i 的大作中提到】
: constructor of a global object will be called before main()
: class Object {
: public:
: Object();
: };
: Object::Object() {
: cout << "my message\n";
: }
: // define a global object somewhere in .cc or .cxx or .cpp
: Object obj;
又一次感觉自己好菜
【在 l***i 的大作中提到】
: constructor of a global object will be called before main()
: class Object {
: public:
: Object();
: };
: Object::Object() {
: cout << "my message\n";
: }
: // define a global object somewhere in .cc or .cxx or .cpp
: Object obj;
N*t
12 楼
。。。像披着羊皮的狼,大尾巴露馅拉
x*0
23 楼
mark
d*n
24 楼
学习了。。。
n*e
25 楼
学习了
i*t
26 楼
考这种问题 多无聊啊
d*x
31 楼
不是的
我只是举一个例子。。。singleton一般人都知道,但是很多人不知道其中thread safe
怎么做,很多人不知道怎么顺序初始化并且约定销毁顺序。。。
design pattern是一定要懂的,不过不要痴迷。。。看看<> 或者
Head First吧。。。
【在 r*********n 的大作中提到】
: 面试官要真的想通过这些trick出难题,那真是无底洞啊
: 书上说template metaprogramming是Turing complete,想要什么样子的程序都可以用
: 编译器搞定。
: 对了,你说design pattern最多考到singleton吗?还有些很诡异的,比如factory,是
: 不是不容易考到。上次看到thinking in c++里面讲到Abstract factory 和
: Polymorphic factory,头都大了。
我只是举一个例子。。。singleton一般人都知道,但是很多人不知道其中thread safe
怎么做,很多人不知道怎么顺序初始化并且约定销毁顺序。。。
design pattern是一定要懂的,不过不要痴迷。。。看看<
Head First吧。。。
【在 r*********n 的大作中提到】
: 面试官要真的想通过这些trick出难题,那真是无底洞啊
: 书上说template metaprogramming是Turing complete,想要什么样子的程序都可以用
: 编译器搞定。
: 对了,你说design pattern最多考到singleton吗?还有些很诡异的,比如factory,是
: 不是不容易考到。上次看到thinking in c++里面讲到Abstract factory 和
: Polymorphic factory,头都大了。
b*m
33 楼
我从来不考人这类问题。
t*i
34 楼
考这个有意思么?也就是害大家白花时间来准备。
一年前我把 c faq, effective c++, more effective c++ 都看了一遍,可是,现在
全还回去了。 平时也用不上。
【在 G****A 的大作中提到】
: in-person interview
: Interviewer: how to std::cout some sentences before main() function.
: Me: blahblah... global variable ....blahblah
: Interviewer: global variable is close, but how exactly ...?
: Me: .....
:
一年前我把 c faq, effective c++, more effective c++ 都看了一遍,可是,现在
全还回去了。 平时也用不上。
【在 G****A 的大作中提到】
: in-person interview
: Interviewer: how to std::cout some sentences before main() function.
: Me: blahblah... global variable ....blahblah
: Interviewer: global variable is close, but how exactly ...?
: Me: .....
:
d*x
38 楼
保证创建顺序是搞一个函数,然后初始化的时候调用一次,挨个去getInstance
这样的问题是能够保证初始化顺序(如果是static变量的话,初始化顺序可能会乱),
但是就丢掉了lazy eval,会略微影响效率。
destroy一般是定义一个static函数注册到atexit,这样退出的时候就能调用到这些
destroy函数。需要注意的是仍然有可能在销毁多个singleton过程中有一些singleton
要重新构造,因为后面销毁的singleton有一定可能又会用到前面销毁的singleton。。。
另一个办法是将要销毁的singleton的destroy函数统一放到一个带优先级的队列里,按
照依赖顺序排好,然后做一个函数来依照这个队列销毁,注册到atexit。
至于singleton的初始化线程安全问题,先去google一下double locking,再搜索一下
memory barrier,就差不多了。
要提
了。
【在 s********l 的大作中提到】
: 能具体说说 怎么写是对的吗?
: 多谢
这样的问题是能够保证初始化顺序(如果是static变量的话,初始化顺序可能会乱),
但是就丢掉了lazy eval,会略微影响效率。
destroy一般是定义一个static函数注册到atexit,这样退出的时候就能调用到这些
destroy函数。需要注意的是仍然有可能在销毁多个singleton过程中有一些singleton
要重新构造,因为后面销毁的singleton有一定可能又会用到前面销毁的singleton。。。
另一个办法是将要销毁的singleton的destroy函数统一放到一个带优先级的队列里,按
照依赖顺序排好,然后做一个函数来依照这个队列销毁,注册到atexit。
至于singleton的初始化线程安全问题,先去google一下double locking,再搜索一下
memory barrier,就差不多了。
要提
了。
【在 s********l 的大作中提到】
: 能具体说说 怎么写是对的吗?
: 多谢
s*l
39 楼
多谢 多谢 很张知识
你说的注册到at exit 是说windows的注册表 还是什么啊?
singleton
。。
【在 d**********x 的大作中提到】
: 保证创建顺序是搞一个函数,然后初始化的时候调用一次,挨个去getInstance
: 这样的问题是能够保证初始化顺序(如果是static变量的话,初始化顺序可能会乱),
: 但是就丢掉了lazy eval,会略微影响效率。
: destroy一般是定义一个static函数注册到atexit,这样退出的时候就能调用到这些
: destroy函数。需要注意的是仍然有可能在销毁多个singleton过程中有一些singleton
: 要重新构造,因为后面销毁的singleton有一定可能又会用到前面销毁的singleton。。。
: 另一个办法是将要销毁的singleton的destroy函数统一放到一个带优先级的队列里,按
: 照依赖顺序排好,然后做一个函数来依照这个队列销毁,注册到atexit。
: 至于singleton的初始化线程安全问题,先去google一下double locking,再搜索一下
: memory barrier,就差不多了。
你说的注册到at exit 是说windows的注册表 还是什么啊?
singleton
。。
【在 d**********x 的大作中提到】
: 保证创建顺序是搞一个函数,然后初始化的时候调用一次,挨个去getInstance
: 这样的问题是能够保证初始化顺序(如果是static变量的话,初始化顺序可能会乱),
: 但是就丢掉了lazy eval,会略微影响效率。
: destroy一般是定义一个static函数注册到atexit,这样退出的时候就能调用到这些
: destroy函数。需要注意的是仍然有可能在销毁多个singleton过程中有一些singleton
: 要重新构造,因为后面销毁的singleton有一定可能又会用到前面销毁的singleton。。。
: 另一个办法是将要销毁的singleton的destroy函数统一放到一个带优先级的队列里,按
: 照依赖顺序排好,然后做一个函数来依照这个队列销毁,注册到atexit。
: 至于singleton的初始化线程安全问题,先去google一下double locking,再搜索一下
: memory barrier,就差不多了。
d*x
42 楼
http://www.cplusplus.com/reference/cstdlib/atexit/
),
,按
一下
【在 s********l 的大作中提到】
: 多谢 多谢 很张知识
: 你说的注册到at exit 是说windows的注册表 还是什么啊?
:
: singleton
: 。。
),
,按
一下
【在 s********l 的大作中提到】
: 多谢 多谢 很张知识
: 你说的注册到at exit 是说windows的注册表 还是什么啊?
:
: singleton
: 。。
w*a
44 楼
template
struct Num
{
enum { Result = Num::Result + 1 };
static void print(){
printf("%d ",Result);
Num::print();
};
};
template <>
struct Num<1>
{
enum { Result = 1 };
static void print(){
printf("%d ",Result);
Num<2>::print();
};
};
template <>
struct Num<10>
{
enum { Result = 10 };
static void print(){
printf("%d ",Result);
};
};
////////////
Num<1> x;
x.print();
struct Num
{
enum { Result = Num
static void print(){
printf("%d ",Result);
Num
};
};
template <>
struct Num<1>
{
enum { Result = 1 };
static void print(){
printf("%d ",Result);
Num<2>::print();
};
};
template <>
struct Num<10>
{
enum { Result = 10 };
static void print(){
printf("%d ",Result);
};
};
////////////
Num<1> x;
x.print();
w*a
45 楼
想了想其实这也算递归。。
w*6
46 楼
mark
s*l
47 楼
多谢 多谢
【在 d**********x 的大作中提到】
: http://www.cplusplus.com/reference/cstdlib/atexit/
:
: ),
: ,按
: 一下
【在 d**********x 的大作中提到】
: http://www.cplusplus.com/reference/cstdlib/atexit/
:
: ),
: ,按
: 一下
G*A
48 楼
in-person interview
Interviewer: how to std::cout some sentences before main() function.
Me: blahblah... global variable ....blahblah
Interviewer: global variable is close, but how exactly ...?
Me: .....
Interviewer: how to std::cout some sentences before main() function.
Me: blahblah... global variable ....blahblah
Interviewer: global variable is close, but how exactly ...?
Me: .....
p*p
49 楼
void fun() { cout << "aa" << endl; }
static void *a = fun();
类似这样?
static void *a = fun();
类似这样?
A*i
50 楼
没看懂啥意思
你可以呼叫好猫问问
你可以呼叫好猫问问
l*i
51 楼
constructor of a global object will be called before main()
class Object {
public:
Object();
};
Object::Object() {
cout << "my message\n";
}
// define a global object somewhere in .cc or .cxx or .cpp
Object obj;
int main()
{
}
This seems to be an exercise from Stroustrup's book
class Object {
public:
Object();
};
Object::Object() {
cout << "my message\n";
}
// define a global object somewhere in .cc or .cxx or .cpp
Object obj;
int main()
{
}
This seems to be an exercise from Stroustrup's book
G*A
52 楼
这个应该是interviewer想要得答案。 The class constructor of a global object。
又一次感觉自己好菜
【在 l***i 的大作中提到】
: constructor of a global object will be called before main()
: class Object {
: public:
: Object();
: };
: Object::Object() {
: cout << "my message\n";
: }
: // define a global object somewhere in .cc or .cxx or .cpp
: Object obj;
又一次感觉自己好菜
【在 l***i 的大作中提到】
: constructor of a global object will be called before main()
: class Object {
: public:
: Object();
: };
: Object::Object() {
: cout << "my message\n";
: }
: // define a global object somewhere in .cc or .cxx or .cpp
: Object obj;
x*0
62 楼
mark
d*n
63 楼
学习了。。。
n*e
64 楼
学习了
i*t
65 楼
考这种问题 多无聊啊
d*x
70 楼
不是的
我只是举一个例子。。。singleton一般人都知道,但是很多人不知道其中thread safe
怎么做,很多人不知道怎么顺序初始化并且约定销毁顺序。。。
design pattern是一定要懂的,不过不要痴迷。。。看看<> 或者
Head First吧。。。
【在 r*********n 的大作中提到】
: 面试官要真的想通过这些trick出难题,那真是无底洞啊
: 书上说template metaprogramming是Turing complete,想要什么样子的程序都可以用
: 编译器搞定。
: 对了,你说design pattern最多考到singleton吗?还有些很诡异的,比如factory,是
: 不是不容易考到。上次看到thinking in c++里面讲到Abstract factory 和
: Polymorphic factory,头都大了。
我只是举一个例子。。。singleton一般人都知道,但是很多人不知道其中thread safe
怎么做,很多人不知道怎么顺序初始化并且约定销毁顺序。。。
design pattern是一定要懂的,不过不要痴迷。。。看看<
Head First吧。。。
【在 r*********n 的大作中提到】
: 面试官要真的想通过这些trick出难题,那真是无底洞啊
: 书上说template metaprogramming是Turing complete,想要什么样子的程序都可以用
: 编译器搞定。
: 对了,你说design pattern最多考到singleton吗?还有些很诡异的,比如factory,是
: 不是不容易考到。上次看到thinking in c++里面讲到Abstract factory 和
: Polymorphic factory,头都大了。
b*m
72 楼
我从来不考人这类问题。
t*i
73 楼
考这个有意思么?也就是害大家白花时间来准备。
一年前我把 c faq, effective c++, more effective c++ 都看了一遍,可是,现在
全还回去了。 平时也用不上。
【在 G****A 的大作中提到】
: in-person interview
: Interviewer: how to std::cout some sentences before main() function.
: Me: blahblah... global variable ....blahblah
: Interviewer: global variable is close, but how exactly ...?
: Me: .....
:
一年前我把 c faq, effective c++, more effective c++ 都看了一遍,可是,现在
全还回去了。 平时也用不上。
【在 G****A 的大作中提到】
: in-person interview
: Interviewer: how to std::cout some sentences before main() function.
: Me: blahblah... global variable ....blahblah
: Interviewer: global variable is close, but how exactly ...?
: Me: .....
:
d*x
77 楼
保证创建顺序是搞一个函数,然后初始化的时候调用一次,挨个去getInstance
这样的问题是能够保证初始化顺序(如果是static变量的话,初始化顺序可能会乱),
但是就丢掉了lazy eval,会略微影响效率。
destroy一般是定义一个static函数注册到atexit,这样退出的时候就能调用到这些
destroy函数。需要注意的是仍然有可能在销毁多个singleton过程中有一些singleton
要重新构造,因为后面销毁的singleton有一定可能又会用到前面销毁的singleton。。。
另一个办法是将要销毁的singleton的destroy函数统一放到一个带优先级的队列里,按
照依赖顺序排好,然后做一个函数来依照这个队列销毁,注册到atexit。
至于singleton的初始化线程安全问题,先去google一下double locking,再搜索一下
memory barrier,就差不多了。
要提
了。
【在 s********l 的大作中提到】
: 能具体说说 怎么写是对的吗?
: 多谢
这样的问题是能够保证初始化顺序(如果是static变量的话,初始化顺序可能会乱),
但是就丢掉了lazy eval,会略微影响效率。
destroy一般是定义一个static函数注册到atexit,这样退出的时候就能调用到这些
destroy函数。需要注意的是仍然有可能在销毁多个singleton过程中有一些singleton
要重新构造,因为后面销毁的singleton有一定可能又会用到前面销毁的singleton。。。
另一个办法是将要销毁的singleton的destroy函数统一放到一个带优先级的队列里,按
照依赖顺序排好,然后做一个函数来依照这个队列销毁,注册到atexit。
至于singleton的初始化线程安全问题,先去google一下double locking,再搜索一下
memory barrier,就差不多了。
要提
了。
【在 s********l 的大作中提到】
: 能具体说说 怎么写是对的吗?
: 多谢
s*l
78 楼
多谢 多谢 很张知识
你说的注册到at exit 是说windows的注册表 还是什么啊?
singleton
。。
【在 d**********x 的大作中提到】
: 保证创建顺序是搞一个函数,然后初始化的时候调用一次,挨个去getInstance
: 这样的问题是能够保证初始化顺序(如果是static变量的话,初始化顺序可能会乱),
: 但是就丢掉了lazy eval,会略微影响效率。
: destroy一般是定义一个static函数注册到atexit,这样退出的时候就能调用到这些
: destroy函数。需要注意的是仍然有可能在销毁多个singleton过程中有一些singleton
: 要重新构造,因为后面销毁的singleton有一定可能又会用到前面销毁的singleton。。。
: 另一个办法是将要销毁的singleton的destroy函数统一放到一个带优先级的队列里,按
: 照依赖顺序排好,然后做一个函数来依照这个队列销毁,注册到atexit。
: 至于singleton的初始化线程安全问题,先去google一下double locking,再搜索一下
: memory barrier,就差不多了。
你说的注册到at exit 是说windows的注册表 还是什么啊?
singleton
。。
【在 d**********x 的大作中提到】
: 保证创建顺序是搞一个函数,然后初始化的时候调用一次,挨个去getInstance
: 这样的问题是能够保证初始化顺序(如果是static变量的话,初始化顺序可能会乱),
: 但是就丢掉了lazy eval,会略微影响效率。
: destroy一般是定义一个static函数注册到atexit,这样退出的时候就能调用到这些
: destroy函数。需要注意的是仍然有可能在销毁多个singleton过程中有一些singleton
: 要重新构造,因为后面销毁的singleton有一定可能又会用到前面销毁的singleton。。。
: 另一个办法是将要销毁的singleton的destroy函数统一放到一个带优先级的队列里,按
: 照依赖顺序排好,然后做一个函数来依照这个队列销毁,注册到atexit。
: 至于singleton的初始化线程安全问题,先去google一下double locking,再搜索一下
: memory barrier,就差不多了。
d*x
81 楼
http://www.cplusplus.com/reference/cstdlib/atexit/
),
,按
一下
【在 s********l 的大作中提到】
: 多谢 多谢 很张知识
: 你说的注册到at exit 是说windows的注册表 还是什么啊?
:
: singleton
: 。。
),
,按
一下
【在 s********l 的大作中提到】
: 多谢 多谢 很张知识
: 你说的注册到at exit 是说windows的注册表 还是什么啊?
:
: singleton
: 。。
w*a
83 楼
template
struct Num
{
enum { Result = Num::Result + 1 };
static void print(){
printf("%d ",Result);
Num::print();
};
};
template <>
struct Num<1>
{
enum { Result = 1 };
static void print(){
printf("%d ",Result);
Num<2>::print();
};
};
template <>
struct Num<10>
{
enum { Result = 10 };
static void print(){
printf("%d ",Result);
};
};
////////////
Num<1> x;
x.print();
struct Num
{
enum { Result = Num
static void print(){
printf("%d ",Result);
Num
};
};
template <>
struct Num<1>
{
enum { Result = 1 };
static void print(){
printf("%d ",Result);
Num<2>::print();
};
};
template <>
struct Num<10>
{
enum { Result = 10 };
static void print(){
printf("%d ",Result);
};
};
////////////
Num<1> x;
x.print();
w*a
84 楼
想了想其实这也算递归。。
w*6
85 楼
mark
s*l
86 楼
多谢 多谢
【在 d**********x 的大作中提到】
: http://www.cplusplus.com/reference/cstdlib/atexit/
:
: ),
: ,按
: 一下
【在 d**********x 的大作中提到】
: http://www.cplusplus.com/reference/cstdlib/atexit/
:
: ),
: ,按
: 一下
h*p
87 楼
mark
相关阅读
老黑鉴赏书法奔~~~~~~~~发一小圈包子!托疯丫头的福,俺有新的job offer了奔个我家柴犬的图图过节也来晒照片啦[bssd]回我心爱的pets版求个大顺产!大过节的,开仓放粮吧商标设计出来啦!请大家提意见!小布大战小T猫咪把标签纸吃了怎么办小布在我旁边Cheese练功发呆打盹图版标猫咪的嘴巴辣椒的床到了快要黑五了,大家开始抢deal了没有?英文不好的人来问问题:(petsmart black friday deal live online没人贴啊:wellness 本月couponMountain biking with his dog, Lily,跑的超级快,录像拍的非常好妞妞:我下边没人,真的。。。