相关疑难解决方法(0)

函数参数的默认值

1.

int Add (int a, int b = 3);
int Add (int a, int b)
{

}
Run Code Online (Sandbox Code Playgroud)

2.

int Add (int a, int b);
int Add (int a, int b = 3)
{

}
Run Code Online (Sandbox Code Playgroud)

两者都有效; 这是标准的方式,为什么

c++ syntax optional-parameters

124
推荐指数
3
解决办法
11万
查看次数

如果在呼叫站点看不到的代码中定义了默认参数值,该怎么办?

我发现了一些奇怪的代码......

//in file ClassA.h:
class ClassA {
public:
    void Enable( bool enable );
};

//in file ClassA.cpp
#include <ClassA.h>
void ClassA::Enable( bool enable = true )
{
   //implementation is irrelevant
}

//in Consumer.cpp
#include <ClassA.h>
....
ClassA classA;
classA.Enable( true );
Run Code Online (Sandbox Code Playgroud)

显然,因为Consumer.cpp只包含ClassA.h而不是ClassA.cpp编译器将无法看到该参数具有默认值.

ClassA::Enable方法实现的签名中声明的默认值何时会产生任何影响?只有在包含ClassA.cpp?的文件中调用方法时才会发生这种情况吗?

c++ header

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

Stack(int = 10),这个语法是什么意思(C++)?

template <typename Type>
class Stack
{
private:
    int stack_size;
    int array_capacity;
    Type *array;

public:
    Stack( int = 10 ); //??
    ~Stack();
    bool empty() const;
    Type top() const;
    void push( const Type & );
    Type pop();
};

template <typename Type>
Stack<Type>::Stack( int n ) :
    stack_size( 0 ),
    array_capacity( std::max(0, n) ),
    array( new Type[array_capacity] )
{
    // Empty constructor
}
Run Code Online (Sandbox Code Playgroud)

这是使用单端数组的堆栈的实现,但是代码的位使我感到困惑.我不明白为什么会说int = 10.

请解释一下,谢谢:)

c++

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

构造函数中的默认参数 - C++

我有一个C++类,我有一个构造函数char*,char*, ostream.我想为ostream(cerr)提供默认值.这是在标题或.cpp文件中完成的吗?

c++ constructor default-value

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

参数的值是多少

我正在学习 C++ 无人机编程。我发现这个功能:

void Vehicle::_announceArmedChanged(bool armed)
Run Code Online (Sandbox Code Playgroud)

但是当我搜索它时,所有代码都在不带参数的情况下调用这个函数,例如:

connect(this, &Vehicle::armedChanged, this, &Vehicle::_announceArmedChanged);
Run Code Online (Sandbox Code Playgroud)

在这种情况下,程序从哪里获得状态呢armed

c++ qt

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