21xrx.com
2024-09-20 05:59:28 Friday
登录
文章检索 我的文章 写文章
C++中声明和定义的区别与使用方法
2023-07-05 04:01:52 深夜i     --     --
声明和定义的区别 C++中的声明方法 C++中的定义方法 C++中的使用方法 C++中的

在C++中,我们经常需要声明和定义变量、函数和类等。虽然这两者看起来很相似,但它们之间确实存在一些差异,同时它们的使用方法也存在一些不同。

首先,声明通常用于告诉编译器,某个变量、函数或类确实存在,并引用它们的名称和类型,但并不为它们分配内存或实现函数体。这是定义的工作。声明的语法通常是:类型名+变量名、类型名+函数名+括号、class/class name等。例如:


int a; // 声明整型变量 a

void foo(int x); // 声明函数foo,它接受一个整型参数x,返回void

class MyClass; // 声明一个名为MyClass的类

相反,定义通常用于告诉编译器,确实为变量或函数或类等分配了内存,实现了函数体等。 它为声明生成了实现,让其拟起形,并在编译时分配空间。定义的语法通常是:类型名+变量名+等号+值、类型名+函数名+括号+函数体等。例如:


int a = 10; // 定义并初始化整型变量a

void foo(int x) // 声明并定义一个函数foo

class MyClass{ // 定义一个名为MyClass的类,包含一些成员变量和函数。

  private:

    int a;

  public:

    void setA(int val)

      a = val;

    

    int getA()

      return a;

    

};

在使用时,声明和定义的使用方法也不同。如果变量、函数或类只是在当前文件中使用,则只需在该文件中声明它们即可。如果需要在其他文件中使用,则必须在该文件中声明它们,同时在其他文件中定义它们。例如:

假设我们有以下三个文件:

1. main.cpp

2. MyFunc.cpp

3. MyFunc.h

main.cpp:


#include <iostream>

#include "MyFunc.h"

using namespace std;

int main()

{

  int a = 10;

  foo(a);

  MyClass obj;

  obj.setA(100);

  cout<<"a="<<obj.getA()<<endl;

  return 0;

}

MyFunc.cpp:


#include <iostream>

using namespace std;

void foo(int x)

  cout<<"x="<<x<<endl;

MyFunc.h:


void foo(int x); // 函数foo的声明

在上述示例中,我们在main.cpp中声明并定义了一个整型变量a和一个名为MyClass的类。 我们在MyFunc.h中声明了一个名为foo的函数,并在MyFunc.cpp中定义了它。 在main.cpp中通过“#include" MyFunc.h”语句来包含 MyFunc.h 文件,并调用 foo 函数。

以上就是声明和定义的区别及使用方法介绍,希望对读者阅读理解C++的使用能够有一定的帮助。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复