由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 问个c++的问题
相关主题
弱问:singleton要不要destructor啊?singleton pattern problem
发面经攒rp —— BloombergCode for Singleton design pattern
Google电面被拒,郁闷中Palantir 2nd coding interview [pass, set for on-site]
gg面试题请问一道special singleton class的题
C++ Singleton的实现Can a 10-year-Java guy answer these 2 questions promptly?
关于singleton 的面试题被鄙视了, c++基础知识
singleton哪种写法好?刚才有个讨论singleton的帖子,找不到了
C++ Singleton Template - 编译通不过问一个thread safe singleton的问题
相关话题的讨论汇总
话题: simple话题: ptr话题: delete话题: stack话题: static
进入JobHunting版参与讨论
1 (共1页)
M********5
发帖数: 715
1
怎么样才能prevent类在stack上instantiation,而只能在heap上instantiation
t******e
发帖数: 1293
2
placement new?

【在 M********5 的大作中提到】
: 怎么样才能prevent类在stack上instantiation,而只能在heap上instantiation
p**********s
发帖数: 115
3
private destructor.
so that if the class is on stack, when it's out of scope, error will be
thrown since destructor is private.

【在 M********5 的大作中提到】
: 怎么样才能prevent类在stack上instantiation,而只能在heap上instantiation
M********5
发帖数: 715
4
谢谢各位了,这个问题以前还真的不知道
M********5
发帖数: 715
5

Then I have one question. How do you delete the object?

【在 p**********s 的大作中提到】
: private destructor.
: so that if the class is on stack, when it's out of scope, error will be
: thrown since destructor is private.

J******e
发帖数: 225
6
应该是copy ctor吧

【在 t******e 的大作中提到】
: placement new?
d********e
发帖数: 132
7
void test
{
B b; // create local auto object on the stack
B* bp = new B() // create object on the heap & have bp refer to it

delete bp; // manually delete object that bp refers to
}

【在 M********5 的大作中提到】
: 怎么样才能prevent类在stack上instantiation,而只能在heap上instantiation
l*******o
发帖数: 791
8
class Simple{
private:
static Simple * ptr;
string name;
Simple();
public:
static Simple * createSimple(){ptr = new Simple(); return ptr;}
const string getName(){return name;}
};
Simple* Simple:: ptr = NULL;
Simple::Simple(): name("mitbbs"){}
//static Simple* Simple::createSimple(){ ptr = new Simple; return ptr;}

void func()
{
Simple *s= Simple::createSimple();
cout<getName()< }

int
l*****a
发帖数: 559
9
这个想法不错。
弄得有点像singleton的getinstance去除mutex了。

ptr;}

【在 l*******o 的大作中提到】
: class Simple{
: private:
: static Simple * ptr;
: string name;
: Simple();
: public:
: static Simple * createSimple(){ptr = new Simple(); return ptr;}
: const string getName(){return name;}
: };
: Simple* Simple:: ptr = NULL;

l******e
发帖数: 12192
10
a static function to delete

【在 M********5 的大作中提到】
:
: Then I have one question. How do you delete the object?

相关主题
关于singleton 的面试题singleton pattern problem
singleton哪种写法好?Code for Singleton design pattern
C++ Singleton Template - 编译通不过Palantir 2nd coding interview [pass, set for on-site]
进入JobHunting版参与讨论
l*******o
发帖数: 791
11
想法不错就是还是不对么?

【在 l*****a 的大作中提到】
: 这个想法不错。
: 弄得有点像singleton的getinstance去除mutex了。
:
: ptr;}

M********5
发帖数: 715
12

it
你根本就没有搞懂我的意思,我的意思是阻止在stack上实例化。。。。你这么写,这个
B b;
依然是在stack上创建的

【在 d********e 的大作中提到】
: void test
: {
: B b; // create local auto object on the stack
: B* bp = new B() // create object on the heap & have bp refer to it
:
: delete bp; // manually delete object that bp refers to
: }

M********5
发帖数: 715
13
以上各位的答案,我觉得有两个是正确的
一个就是private destructor,然后在类里面写一个函数,delete掉创建的对象
一个就是上面luhonghao写的,不过这个的实现确实是singleton的实现
l*******o
发帖数: 791
14
我这个还不算singleton,因为singleton要检查是否static指针指空。我这个有点像
simple
factory pattern.大家说呢?

【在 M********5 的大作中提到】
: 以上各位的答案,我觉得有两个是正确的
: 一个就是private destructor,然后在类里面写一个函数,delete掉创建的对象
: 一个就是上面luhonghao写的,不过这个的实现确实是singleton的实现

l*****a
发帖数: 559
15
一点也没这个意思。
刚看到的时候感觉被inspire了。

【在 l*******o 的大作中提到】
: 想法不错就是还是不对么?
l*******y
发帖数: 1498
16
private destructor还是可以在stack上instantiation吧,只是不能直接destruct?

【在 M********5 的大作中提到】
: 以上各位的答案,我觉得有两个是正确的
: 一个就是private destructor,然后在类里面写一个函数,delete掉创建的对象
: 一个就是上面luhonghao写的,不过这个的实现确实是singleton的实现

z***9
发帖数: 696
17
private ctor and public function to create objects in heap
t****t
发帖数: 6806
18
no, if you try instantiate on stack, the destructor call will be generated
implicitly and you can not compile at all.

【在 l*******y 的大作中提到】
: private destructor还是可以在stack上instantiation吧,只是不能直接destruct?
l*******y
发帖数: 1498
19
确实,刚试过了。不能编译。如果new 然后直接delete编译也会报错,只能自己定义一个static
member function 或者一个 friend function 来 delete,然后调用这些function来完
成delete.

【在 t****t 的大作中提到】
: no, if you try instantiate on stack, the destructor call will be generated
: implicitly and you can not compile at all.

h**k
发帖数: 3368
20

;}
不需要静态指针ptr,直接return new Simple()就可以了。

【在 l*******o 的大作中提到】
: class Simple{
: private:
: static Simple * ptr;
: string name;
: Simple();
: public:
: static Simple * createSimple(){ptr = new Simple(); return ptr;}
: const string getName(){return name;}
: };
: Simple* Simple:: ptr = NULL;

h**6
发帖数: 4160
21
我试了一下,定义一个这样的函数也可以完成销毁变量,大家看看行不行:
void destroy(){this->~A();}
其中 A 是类名。

一个static

【在 l*******y 的大作中提到】
: 确实,刚试过了。不能编译。如果new 然后直接delete编译也会报错,只能自己定义一个static
: member function 或者一个 friend function 来 delete,然后调用这些function来完
: 成delete.

M********5
发帖数: 715
22
这样是没有问题的

【在 h**6 的大作中提到】
: 我试了一下,定义一个这样的函数也可以完成销毁变量,大家看看行不行:
: void destroy(){this->~A();}
: 其中 A 是类名。
:
: 一个static

1 (共1页)
进入JobHunting版参与讨论
相关主题
问一个thread safe singleton的问题C++ Singleton的实现
面试常考哪些java的design pattern关于singleton 的面试题
Bloomberg电面面经singleton哪种写法好?
singleton without static?C++ Singleton Template - 编译通不过
弱问:singleton要不要destructor啊?singleton pattern problem
发面经攒rp —— BloombergCode for Singleton design pattern
Google电面被拒,郁闷中Palantir 2nd coding interview [pass, set for on-site]
gg面试题请问一道special singleton class的题
相关话题的讨论汇总
话题: simple话题: ptr话题: delete话题: stack话题: static