Visual studio 为什么在创建新的C++;上课? 我大约在14年前编写了一段C++程序。我熟悉了一些新技术,比如我主要使用的.NET 现在,我正在编写一个SimLPE电话列表Windows应用程序,我想让它成为C++,这样我就可以更好地查看C和C++的差异。
让我说,我已经注意到了一个不同!呵呵。。。因此,其中一个区别是,当从VisualStudio模板创建新的C++类时,它不仅创建.cp类文件,而且还创建一个头文件及其文件。 为什么会这样?为什么要为一个类创建class1.h和class1.cpp文件 我记得头文件很可能是函数和对象的库,如果我们可以这样说的话,为了将来的重用,我记得对吗 问题 为什么在添加新的C++类时创建两个文件(.h和.cp)?Visual studio 为什么在创建新的C++;上课? 我大约在14年前编写了一段C++程序。我熟悉了一些新技术,比如我主要使用的.NET 现在,我正在编写一个SimLPE电话列表Windows应用程序,我想让它成为C++,这样我就可以更好地查看C和C++的差异。,visual-studio,visual-c++,class,header-files,visual-c++-2008,Visual Studio,Visual C++,Class,Header Files,Visual C++ 2008,让我说,我已经注意到了一个不同!呵呵。。。因此,其中一个区别是,当从VisualStudio模板创建新的C++类时,它不仅创建.cp类文件,而且还创建一个头文件及其文件。 为什么会这样?为什么要为一个类创建class1.h和class1.cpp文件 我记得头文件很可能是函数和对象的库,如果我们可以这样说的话,为了将来的重用,我记得对吗 问题 为什么在添加新的C++类时创建两个文件(.h和.cp)? 我应该在头文件中定义成员,在cpp文件中定义核心函数吗 如果对2为否,那么在这个特定场景中头文件的
// Customer.h header file
ref class Customer {
private:
char* _number, _name;
long _phoneNumber;
public:
char[] get_number();
void set_number(char* number);
char[] get_name();
void set_name(char* name);
long get_phoneNumber();
void set_phoneNumber(long phoneNumber);
void set_name(char* name);
}
然后:
//Customer.cpp
#包括
char[]客户::获取_编号(){
返回(u)号;;
}
无效客户::设置_编号(字符*编号){
if(number!=null&&sizeof(number)<1)返回;
_数字=数字;
}
//这里的其他成员。。。
现在我知道了,我的代码中有很多错误。如果你帮我改正,我会很高兴,这样我就能提高我的C++技能。
谢谢你帮我弄明白。类在头文件中声明,大多数功能在.cpp文件中定义。该工具将帮助您实现接口与实现的分离 考虑头文件和.cpp文件之间的分离的方法是:
- 标题包含其他文件要使用的声明
- .cpp文件包含实现
原因是您希望许多文件能够利用功能,但您只希望在一个位置实际定义该功能。头文件声明/定义一个类。它包含成员函数、成员数据、朋友等。通常,它不包含太多(如果有的话)实现(模板是例外) 实现文件(*.cpp)就是这样:它们实现类
您不必使用实现文件(如果您告诉VS向导您要创建一个内联类,它将只创建头文件),但通常只对模板类(例如STL类和boost库中的许多类)执行此操作或非常简单的类。头文件是C++编译所必需的,因为它与C<./p>几乎没有区别。 在C#中,二进制模块之间的链接总是动态的。在C++中,静态和动态链接有区别。要深入细节,我得花上整整一个小时的时间来写,但让我们说这是最短的方式 在C++中,每个.CPP文件被单独编译成一个对象文件。该文件需要链接到其他文件才能形成二进制文件。头文件声明包含它的.cpp文件所需的所有方法签名,该文件调用为类定义的方法
在C++中,所有文件都编译成一个二进制文件,即编译器总是知道编译的成员可以看到哪些类和方法。 < P>函数和C++类必须在使用之前声明,这只是一个声明,说明这些函数可以从这个文件中使用。这些声明是使用头文件(
.hpp
/.h
文件)导入的
要声明函数,请编写以下代码:
返回类型
函数名
(
参数
)代码>
所以这个函数:
int factorial (int x)
{
if (x == 0)
return 1;
return x * factorial (x - 1);
}
将预先声明如下:
int factorial (int x);
声明类如下所示:
int factorial (int x);
类
类名
{
函数和变量声明
}
因此,使用方法bar
的class Foo
和公共成员变量baz
如下所示:
int factorial (int x);
foo.hpp:
#ifndef FOO_HPP_
#define FOO_HPP_
class Foo
{
public:
int baz;
void bar ();
};
#endif
#include "foo.hpp"
#include <iostream>
void Foo::bar ()
{
std::cout << baz << std::endl;
}
foo.cpp:
#ifndef FOO_HPP_
#define FOO_HPP_
class Foo
{
public:
int baz;
void bar ();
};
#endif
#include "foo.hpp"
#include <iostream>
void Foo::bar ()
{
std::cout << baz << std::endl;
}
#包括“foo.hpp”
#包括
void Foo::bar()
{
std::cout那么私有成员(如用于属性函数的字段)呢get\u this
,set\u this
?一个小问题:类和函数不必“预先声明”在C/C++中,它们只需在使用前声明或实现。除了大型项目上长编译时间的头痛之外,没有什么能阻止您用头文件ALL来实现每个类。这是C++ + CLI。您想使用本机C++还是托管C++代码?有很大的区别。@史提夫:谢谢P。事实上,我不能这么说。我想,原生C++对于我来说,能在C++中足够的下钻,这样我就可以快速地运行起来,让我能够有效地开发应用程序,对吗?或者它甚至值得?如果你想学习不需要CLR的C++代码,那么你需要本机C++。<代码> REF类<代码中的code>是一种赠品,从函数返回数组。在本机代码中两者都不可能。