我正在读一本书,C++ 入门指南。
我想我已经掌握了它的窍门,我只是想澄清一些事情。
它说 a
class
就像一个数据类型(A 数据类型是int
,char
, ect ..)并且Object
/Instance 就像一个变量。这是真的?什么是数据表格?
声明的哪一部分是声明?是
data type
+the variable
,=
是作业吗?
我正在读一本书,C++ 入门指南。
我想我已经掌握了它的窍门,我只是想澄清一些事情。
它说 aclass
就像一个数据类型(A 数据类型是int
, char
, ect ..)并且Object
/Instance 就像一个变量。这是真的?
什么是数据表格?
声明的哪一部分是声明?是data type
+ the variable
,=
是作业吗?
不完全的。
从某种意义上说,类“就像一种数据类型”,它是用于创建对象的模板,但它本身并不是您可以使用的对象。
当您使用该模板创建对象的实例时,您可以使用该对象。您可以根据需要创建任意数量的实例 - 您可以将这些实例视为变量。
例如:
class Person
{
public:
Person() : name("Joe Bloggs") {}
std::string getName() { return name; }
void setName(std::string n) { name = n; }
private:
std::string name;
};
这是 Person 的类定义。它不是一个变量。您不能对其调用 setName ,因为它尚不存在。但是当你这样做时:
int main()
{
Person p, q;
p.setName("Jill Bloggs");
q.setName("Bob King");
std::cout << p.getName() << " " << q.getName() << std::endl;
}
您创建了两个可以分配、更改和使用的人员实例——它们是称为实例的变量。
我不知道“数据形式”是什么意思,忽略它。
至于声明 - 声明声明将存在某事的实例。例如,如果您正在创建一个类,并且您的头文件具有:
class foo
{
public:
foo(int value);
void bar();
private:
int x;
};
您声明您有一个名为 bar 的函数,该函数返回 void,并且您有一个名为 x 的整数。
没有为变量 x 分配内存,也没有提供定义或 bar,所以它们只是声明。您的源文件可能会为 bar 提供定义,例如:
void foo::bar()
{
//some code
}
以及 foo 的构造函数定义,它将用一个值初始化 x 并控制它的创建方式(使用初始化列表):
foo::foo(int value) : x(value)
{
//some code
}