亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> C语言

带有示例的 C++ 类和对象

什么是类?

C++ 类将数据和用于操作数据的方法合二为一。类也决定了对象的形式。类中包含的数据和方法称为类成员。类是用户定义的数据类型。要访问类成员,我们使用类的实例。您可以将类视为对象的蓝图。

一个类是一个房子的原型。它显示了门、窗、地板等的位置和大小。根据这些描述,我们可以建造一座房子。房子变成了对象。可以从原型创建许多房屋。此外,可以从一个类中创建许多对象。

在上图中,我们有一个单独的房屋原型。从这个原型中,我们创建了两个具有不同特征的房子。

在本教程中,您将学习:

类声明

在 C+ 中,类是使用 class 关键字定义的。这应该跟类名。然后在花括号 { } 之间添加类主体。

语法:

class class-name
   {
   // data
   // functions
   };

私人和公共关键字

您一定遇到过这两个关键字。它们是访问修饰符。

当 private 关键字用于定义函数或类时,它就变成了私有的。这些只能从类中访问。

另一方面,public 关键字使数据/函数公开。这些可以从课堂外访问。

对象定义

对象是从类创建的。类对象的声明方式与声明变量的方式类似。类名必须以对象名开头。类类型的对象。

语法:

class-name object-name;

从类创建对象的过程称为实例化。

访问数据成员

要访问类的公共成员,我们使用 (.)dot 运算符。这些是用公共访问修饰符标记的成员。

示例 1:

#include <iostream>
using namespace std;
class Phone {
public:
	double cost;   
	int slots; 
};
int main() {
	Phone Y6;        
	Phone Y7;        

	Y6.cost = 100.0;
	Y6.slots = 2;

	Y7.cost = 200.0;
	Y7.slots = 2;
	cout << "Cost of Huawei Y6 : " << Y6.cost << endl;
	cout << "Cost of Huawei Y7 : " << Y7.cost << endl;

	cout << "Number of card slots for Huawei Y6 : " << Y6.slots << endl;
	cout << "Number of card slots for Huawei Y7 : " << Y7.slots << endl;

	return 0;
}

输出:

下面是代码截图:

代码说明

  1. 在我们的代码中包含 iostream 头文件以便使用它的功能。
  2. 在我们的代码中包含 std 命名空间以使用它的类而不调用它。
  3. 声明一个名为 Phone 的类。
  4. 使用 public 访问修饰符将我们即将创建的变量标记为可公开访问。
  5. 声明双精度数据类型的可变成本。
  6. 声明一个名为 slot 的整数变量。
  7. 类主体结束。
  8. 调用 main() 函数。程序逻辑应添加到其主体中。
  9. 创建一个名为 Y6 且类型为 Phone 的对象。这称为实例化。
  10. 创建一个名为 Y7 且类型为 Phone 的对象。这称为实例化。
  11. 使用对象 Y6 访问类 Phone 的变量/成员成本。该值设置为 100.0。 Y6 的成本现在设置为 100.0。
  12. 使用对象 Y6 访问类 Phone 的变量/成员槽。该值设置为 2。Y6 的插槽现在设置为 2。
  13. 使用对象 Y7 访问类 Phone 的变量/成员成本。该值设置为 200.0。 Y7 的成本现在设置为 200.0。
  14. 使用对象 Y7 访问 Phone 类的变量/成员槽。该值设置为 2。Y7 的插槽现在设置为 2。
  15. 在控制台上打印 Y6 的费用以及其他文本。
  16. 在控制台上打印 Y7 的成本以及其他文本。
  17. 在其他文本旁边打印 Y6 的插槽数。
  18. 在其他文本旁边打印 Y7 的插槽数。
  19. 程序必须在成功完成后返回一个值。
  20. main() 函数体结束。

什么是私有类?

标记为私有的类成员只能由该类中定义的函数访问。在类之外定义的任何对象或函数都不能直接访问这些成员。私有类成员只能由成员函数和友元函数访问。

什么是受保护的类?

标记为受保护的类成员比标记为私有的类成员具有优势。它们可以被它们定义的类中的函数访问。此外,它们可以从派生类中访问。

示例 2:

#include <iostream>
using namespace std;
class ClassA {
public:
	void set_a(int val);
	int get_a(void);

private:
	int a;
};
int ClassA::get_a(void) {
	return a;
}
void ClassA::set_a(int val) {
	a = val;
}
int main() {
	ClassA a;
	a.set_a(20); 
	cout << "Value of a is: " << a.get_a(); 
	return 0;
}

输出:

下面是代码截图:

代码说明:

  1. 在我们的代码中包含 iostream 头文件以使用其功能。
  2. 在我们的代码中包含 std 命名空间,以便在不调用它的情况下使用它的类。
  3. 创建一个名为 ClassA 的类。
  4. 使用 public 访问修饰符将要创建的类成员标记为可公开访问。
  5. 创建一个名为 set_a() 的函数,它接受一个整数值 val。
  6. 创建一个名为 get_a() 的函数。
  7. 使用 private 访问修饰符将要创建的类成员标记为可私有访问。
  8. 声明一个名为 a 的整数变量。
  9. 类主体结束。
  10. 使用类名和范围解析运算符来访问函数 get_a()。我们想定义函数在被调用时的作用。
  11. 函数 get_a() 应该在调用时返回变量 a 的值。
  12. 函数get_a()的定义结束。
  13. 使用类名和范围解析运算符来访问函数 set_a()。我们想定义函数在被调用时的作用。
  14. 将变量 val 的值赋给变量 a。
  15. 函数 set_a() 的定义结束。
  16. 调用 main() 函数。程序逻辑应添加到此函数的主体中。
  17. 创建一个 ClassA 的实例并将其命名为 a。
  18. 使用上面的类实例和函数 set_a() 给变量 a 赋值 20。
  19. 在控制台上在变量 a 的值旁边打印一些文本。变量a的值通过调用get_a()函数获取。
  20. 程序必须在成功完成后返回值。
  21. main() 函数体结束。

示例 3:

#include <iostream>
using namespace std;
class ParentClass {
protected:
	int value;
};
class ChildClass : public ParentClass {
public:
	void setId(int x) {
		value = x;
	}
	void displayValue() {
	cout << "Value is: " << value << endl;
	}
};
int main() {
	ChildClass c;
	c.setId(21);
	c.displayValue();
	return 0;
}

输出:

下面是代码截图:

代码说明:

  1. 在我们的代码中包含 iostream 头文件以使用其功能。
  2. 在我们的代码中包含 std 命名空间,以便在不调用它的情况下使用它的类。
  3. 创建一个名为 ParentClass 的类。
  4. 使用 protected 访问修饰符将要创建的类成员标记为受保护。
  5. 创建一个名为 value 的整数变量。
  6. 类主体结束。
  7. 创建一个继承 ParentClass 的名为 ChildClass 的新类。
  8. 使用受保护的访问修饰符将要创建的类成员标记为可供子类访问。
  9. 创建一个名为 setId() 的函数,它接受一个整数值 x。
  10. 将变量 x 的值赋给变量值。
  11. 函数 setId() 的定义结束。
  12. 创建一个名为 displayValue() 的函数。
  13. 在控制台上打印名为 value 的变量的值以及其他文本。
  14. 函数 displayValue() 的主体结束。
  15. 名为 ChildClass 的类的主体结束。
  16. 调用 main() 函数。程序逻辑应添加到此函数的主体中。
  17. 创建一个 ChildClass 的实例并将其命名为 c。
  18. 使用上面的类实例和函数 setId() 为变量 x 赋值 21。
  19. 使用上面的类实例调用名为 displayValue() 的函数。
  20. 程序必须在成功完成后返回值。
  21. main() 函数体结束。

类成员函数

函数帮助我们操作数据。类成员函数可以通过两种方式定义:

如果要在类定义之外定义函数,我们必须使用范围解析运算符 (::)。这应该伴随着类和函数名。

示例 2:

#include <iostream>
#include <string>
using namespace std;
class Guru99
{
public:
	string tutorial_name;
	int id;
	void printname();
	void printid()
	{
		cout << "Tutorial id is: "<< id;
	}
};
void Guru99::printname()
{
	cout << "Tutorial name is: " << tutorial_name;
}
int main() {
	Guru99 guru99;
	guru99.tutorial_name = "C++";
	guru99.id = 1001;
	guru99.printname();
	cout << endl;
	guru99.printid();
	return 0;
}

输出:

下面是代码截图:

代码说明:

  1. 在我们的程序中包含 iostream 头文件以使用其功能。
  2. 在我们的程序中包含字符串头文件以使用它的功能。
  3. 在我们的代码中包含 std 命名空间,以便在不调用它的情况下使用它的类。
  4. 创建一个名为 Guru99 的类。
  5. 使用 public 访问修饰符将我们即将创建的类成员标记为可公开访问。
  6. 创建一个名为 tutorial_name 的字符串变量。
  7. 创建一个名为 id 的整数变量。
  8. 创建一个名为 printname() 的函数。此函数未在类定义中定义。
  9. 创建一个名为printed() 的函数。该函数在类定义中定义。它的主体已添加到类定义中。
  10. 在控制台上打印变量 id 的值以及其他文本。请注意,这已添加到 printid() 函数的主体中。它只会在调用 printid() 函数时执行。
  11. 函数体 printid() 结束。
  12. Guru99 类主体的结尾。
  13. 函数 printname() 的定义开始。
  14. 在控制台上打印变量 tutorial_name 的值以及其他文本。请注意,这已添加到 printname() 函数的主体中。它只会在调用 printname() 函数时执行。
  15. printname()函数定义结束。
  16. 调用 main() 函数。程序逻辑应添加到此函数的主体中。
  17. 创建 Guru99 类的实例并将其命名为 guru99。
  18. 使用上述实例将 C++ 的值赋给变量 tutorial_name。
  19. 使用 guru99 实例为变量 id 赋值 1001。
  20. 使用实例 guru99 调用函数 printname()。
  21. 调用 end(结束行)命令在控制台上打印一个新的空白行。
  22. 使用实例 guru99 调用函数 printid()。
  23. 程序必须在成功完成后返回值。
  24. main() 函数体结束。

构造函数和析构函数

什么是构造函数?

构造是初始化对象的特殊函数。 C++ 编译器在创建对象时调用构造函数。构造函数有助于将值分配给类成员。当然,这是在它们被分配了一些内存空间之后。

什么是析构函数?

另一方面,析构函数有助于销毁类对象。

构造函数名称必须与类名称相似。构造函数没有返回类型。

构造函数可以在类体内部或外部定义。如果在类体之外定义,则应使用类名和范围解析运算符(::)来定义。

示例 3:

#include <iostream>  
using namespace std;
class ClassA {
public:
	ClassA() {
		cout << "Class constructor called"<<endl;
	}
	~ClassA() {
		cout << "Class destructor called"<<endl;
	}
};

int main() {
	ClassA a;
	int p = 1;
		if (p) {
			ClassA b; 
		}   
}

输出:

下面是代码截图:

代码说明:

  1. 将 iostream 头文件包含到代码中以使用其功能。
  2. 在我们的代码中包含 std 命名空间,以便在不调用它的情况下使用它的类。
  3. 创建一个名为 ClassA 的类。
  4. 使用 public 访问修饰符将我们即将创建的成员标记为可公开访问。
  5. 为类创建一个构造函数。
  6. 调用构造函数时在控制台上打印的文本。 endl 是 C++ 关键字,表示结束行。它将鼠标光标移动到下一行。
  7. 类构造函数主体的结尾。
  8. 为类创建一个析构函数。
  9. 调用析构函数时在控制台上打印的文本。 endl 是 C++ 关键字,表示结束行。它将鼠标光标移动到下一行。
  10. 析构函数主体的结尾。
  11. 类主体结束。
  12. 调用 main() 函数。程序逻辑应添加到此函数的主体中。
  13. 创建一个类对象并将其命名为 a。将调用构造函数。
  14. 创建一个名为 p 的整数变量并将其赋值为 1。
  15. 使用变量 p 创建一个 if 语句块。
  16. 创建一个类对象并将其命名为 b。将调用析构函数。
  17. if 语句主体的结尾。
  18. main() 函数主体的结尾。

总结:


C语言

  1. C# 类和对象
  2. C++ 类和对象
  3. C++朋友函数和朋友类
  4. C++ 类模板
  5. C++ 中的运算符示例:什么是、类型和程序
  6. 带有示例的 C++ Switch Case 语句
  7. C++ 动态分配数组的例子
  8. C++ 结构与示例
  9. C++ 中的 std::list 示例
  10. 结构和类的区别:用 C++ 示例解释
  11. C# 抽象类教程与示例:什么是抽象?
  12. Java - 对象和类