Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C++中,我可以使用智能指针作为类成员吗?_C++_Class_Shared Ptr_Smart Pointers_Unique Ptr - Fatal编程技术网

在C++中,我可以使用智能指针作为类成员吗?

在C++中,我可以使用智能指针作为类成员吗?,c++,class,shared-ptr,smart-pointers,unique-ptr,C++,Class,Shared Ptr,Smart Pointers,Unique Ptr,我了解到独特的指针会在作用域的末尾消亡。那么它在班级成员中是如何工作的呢?共享指针有效吗?是的,绝对有效!您可以在类中使用它们作为成员 当它用作成员变量时,唯一指针的生存期就是对象本身的生存期,除非您显式释放它们。当对象被销毁时,唯一指针和所有智能指针将释放其内存。绝对是!您可以在类中使用它们作为成员 当它用作成员变量时,唯一指针的生存期就是对象本身的生存期,除非您显式释放它们。当对象被销毁时,唯一指针和所有智能指针将释放其内存 C++中可以使用智能指针作为类成员吗? 对。除了根本无法实例化的

我了解到独特的指针会在作用域的末尾消亡。那么它在班级成员中是如何工作的呢?共享指针有效吗?

是的,绝对有效!您可以在类中使用它们作为成员


当它用作成员变量时,唯一指针的生存期就是对象本身的生存期,除非您显式释放它们。当对象被销毁时,唯一指针和所有智能指针将释放其内存。

绝对是!您可以在类中使用它们作为成员

当它用作成员变量时,唯一指针的生存期就是对象本身的生存期,除非您显式释放它们。当对象被销毁时,唯一指针和所有智能指针将释放其内存

C++中可以使用智能指针作为类成员吗? 对。除了根本无法实例化的类之外,几乎任何类都可以是成员

我了解到独特的指针会在作用域的末尾消亡

所有自动变量都死在作用域的末尾。此属性不是智能指针特有的。例如:

{
    int i = 42;
} // i "dies" here
使智能指针不同于裸指针的一点不是它们在作用域的末尾死亡,因为裸指针也会死亡,而是智能指针在死亡时会做什么

当超级对象消亡时,非静态成员变量消亡

共享指针有效吗

C++中可以使用智能指针作为类成员吗? 对。除了根本无法实例化的类之外,几乎任何类都可以是成员

我了解到独特的指针会在作用域的末尾消亡

所有自动变量都死在作用域的末尾。此属性不是智能指针特有的。例如:

{
    int i = 42;
} // i "dies" here
使智能指针不同于裸指针的一点不是它们在作用域的末尾死亡,因为裸指针也会死亡,而是智能指针在死亡时会做什么

当超级对象消亡时,非静态成员变量消亡

共享指针有效吗


是。

是。虽然对象生存期和词法作用域是连接在一起的,但它们不是一个。你担心班上的成员死了,但你是否考虑到它的出现?是的。虽然对象生存期和词法作用域是连接在一起的,但它们不是一个。你担心班上的成员死了,但你是否考虑到它活着的时候?所有聪明的指针都会释放它的内存。由于其他共享\u ptr可能仍然拥有相同内存的所有权。并且所有智能指针都将释放其内存,因此共享\u ptr拥有的内存不一定会被释放,因为其他共享\u ptr可能仍然拥有相同内存的所有权。