小编lcs*_*lcs的帖子

条件堆栈变量

给定以下函数,是否会在堆栈中声明每个局部变量?

std::string reallyCoolFunction(unsigned int a)
{
   if( a < 20 ) 
   {
     std::string result1 = "This function is really cool";
     return result1;
   }

   if( a >=20 && a <= 40 )
   {
     std::string result2 = "This function is kind of cool";
     return result2;
   }

   if( a > 40 )
   {
     std::string result3 = "This function is moderately cool";
     return result3;
   }

 std::string result4 = "This function really isn't that cool"; 
 return result4; // remove warning

}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,std::string实际上只需要一个,在堆栈上分配所有4个,或者只分配1个吗?

c++

15
推荐指数
3
解决办法
546
查看次数

构造函数参数和同名成员

我很好奇以下代码是否有效。静态分析在此构造函数上给出错误。

总结:成员变量'A'是自己初始化的。

总结:成员变量'B'是自己初始化的。

总结:成员变量'C'是自己初始化的。

class Foo
{
public:
    Foo(int A, int B, int C);
private:
    int A;
    int B;
    int C;
}

Foo::Foo(int A, int B, int C) : 
A(A),
B(B),
C(C)
{}
Run Code Online (Sandbox Code Playgroud)

我知道这不是一个好的做法,可能应该改变,但是我想知道静态分析警告是否是误报并且成员变量是否会被正确初始化。

c++ oop language-lawyer initialization-list

5
推荐指数
1
解决办法
2770
查看次数

C++ /链表中的指针

让我们说在我的链表类中我保留一个指向链表头部的指针......

在我编写此代码时的一个成员函数中...

Node *cur = head;
cur = cur->next;
Run Code Online (Sandbox Code Playgroud)

为什么不改头换面head->next

如果我写cur = NULL; 会不会成功null

c++ pointers linked-list

2
推荐指数
1
解决办法
242
查看次数

std :: unique_ptr的好处是什么,包括删除器作为类型的一部分

为什么std::unique_ptr包含删除函数签名作为模板定义的一部分有什么原因?

template<class T, class Deleter = std::default_delete<T>> class unique_ptr;
Run Code Online (Sandbox Code Playgroud)

VS

template< class T > class shared_ptr;
Run Code Online (Sandbox Code Playgroud)

c++ c++11

1
推荐指数
1
解决办法
1413
查看次数