由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - c++的对象管理符合邓小平理论:来料加工,两头在外
相关主题
一道c++的考古题从无虚函数的基类到有虚函数的派生类
这几天写了大概两万行代码问一个关于C++指针的问题
这个月在用c++造轮子,从一维数组开始造定义 单链表 数组,会不会很奇怪
问个c++ struct和指针问题关于多线程编程的一个问题
为什么需要定义 = 和 copy ctor多文本搜索多个字符串
请教C++面试题当年MS放弃Visual basic 6,真是一个2B的决定啊...
how to assign object rather and 'reference' to a python list?谁能讲讲sbt?
什么时候需要调用STL container的destructor?被opengl害惨了!
相关话题的讨论汇总
话题: new话题: temp2话题: classa话题: ptr话题: file
进入Programming版参与讨论
1 (共1页)
N******K
发帖数: 10202
1
p1 = new object1
p2 = new object2
p3 = new object3
p4 = new object4
function A(input (i.e., const): p1, p2 , output p3 p4)
{
temp1= shared_ptr(new ObjectTemp1)
temp2= shared_ptr(new ObjectTemp2)
do somthing using p1 p2 temp 1 temp2 to update p3 p4
} //delete temp1, delete temp2
输入 输出 都已经new好了
内部加工加工
内部new出来的 {}结束统统释放
N******K
发帖数: 10202
2
当有成员变量 m_ClassA_member 的时候
p1 = new object1;
p2 = new object2;
p3 = new object3;
p4 = new object4;
ClasseA::function A(input (i.e., const): p1, p2 , output p3 p4)
{
temp1= shared_ptr(new ObjectTemp1);
temp2= shared_ptr(new ObjectTemp2);
m_ClassA_member = new(xxx);
do somthing using p1 p2 temp 1 temp2 to update p3 p4
} //delete temp1, delete temp2
ClassA()
{
m_ClassA_member = nullptr;
}
~ClassA()
{
if (m_ClassA_member != nullptr)
delete m_ClassA_member ;
}

【在 N******K 的大作中提到】
: p1 = new object1
: p2 = new object2
: p3 = new object3
: p4 = new object4
: function A(input (i.e., const): p1, p2 , output p3 p4)
: {
: temp1= shared_ptr(new ObjectTemp1)
: temp2= shared_ptr(new ObjectTemp2)
: do somthing using p1 p2 temp 1 temp2 to update p3 p4
: } //delete temp1, delete temp2

p***o
发帖数: 1252
3
你这code看着像是java程序员写的。

【在 N******K 的大作中提到】
: 当有成员变量 m_ClassA_member 的时候
: p1 = new object1;
: p2 = new object2;
: p3 = new object3;
: p4 = new object4;
: ClasseA::function A(input (i.e., const): p1, p2 , output p3 p4)
: {
: temp1= shared_ptr(new ObjectTemp1);
: temp2= shared_ptr(new ObjectTemp2);
: m_ClassA_member = new(xxx);

N******K
发帖数: 10202
4
你觉得c++程序猿怎么写?

【在 p***o 的大作中提到】
: 你这code看着像是java程序员写的。
N******K
发帖数: 10202
5
我估计你喜欢 return shared_ptr 或者 把 shared_ptr 作为函数参数
比如这样的例子 http://stackoverflow.com/questions/395123/raii-and-smart-pointers-in-c
void setLog(const Foo & foo, const Bar & bar) {
shared_ptr file(new File("/path/to/file", File::append));
foo.setLogFile(file);
bar.setLogFile(file);
}
foo::setLogFile(shared_ptr input_file)
{ member_of_foo=input_file;
}
bar::setLogFile(shared_ptr input_file)
{ member_of_bar=input_file;
}
类的成员变量 也当做函数输出
比如 setLog 的输入是 const Foo & foo, const Bar & bar
输出实际上是member_of_foo和member_of_bar
这两个setLogFile实际上做的是分配资源,并保存为成员变量
我第一篇帖子说的是 一般函数内部做一些运算 并不参与成员变量的初始化
结论:函数内 new 一个东西 然后把这个东西的裸指针作为输出 是错误行为
我第二篇帖子说的是 成员变量的初始化 没有共享资源。
结论:函数内 new 一个东西,如果要作为输出,应该是给某个类成员变量
本帖说的是 成员变量的初始化 共享资源。
结论:函数内 new 一个东西,如果要作为输出给多个类,应该用shared_ptr
java程序猿不会管这些的 到处new就行了

【在 p***o 的大作中提到】
: 你这code看着像是java程序员写的。
1 (共1页)
进入Programming版参与讨论
相关主题
被opengl害惨了!为什么需要定义 = 和 copy ctor
shared_ptr and dynamic_pointer_cast请教C++面试题
error while loading shared librarieshow to assign object rather and 'reference' to a python list?
请教,关于g++ -l的问题什么时候需要调用STL container的destructor?
一道c++的考古题从无虚函数的基类到有虚函数的派生类
这几天写了大概两万行代码问一个关于C++指针的问题
这个月在用c++造轮子,从一维数组开始造定义 单链表 数组,会不会很奇怪
问个c++ struct和指针问题关于多线程编程的一个问题
相关话题的讨论汇总
话题: new话题: temp2话题: classa话题: ptr话题: file