c++怎么定义一个类和对象_c++类与对象定义及使用方法

c++怎么定义一个类和对象_c++类与对象定义及使用方法
最新回答
洛筱爱

2021-06-22 22:38:47

在C++中,类(class)是用户自定义的数据类型,用于封装数据和操作这些数据的函数;对象(object)是类的具体实例。以下是类与对象的定义及使用方法:

1. 类的定义

使用class关键字定义类,包含成员变量(属性)和成员函数(方法)。通过访问控制符(如public、private)管理成员的访问权限。

  • 基本语法

    class 类名 { 访问控制符: 成员变量; 成员函数();};
  • 示例:定义一个表示学生的类

    class Student {public: std::string name; // 公有成员变量 int age; void introduce() { // 公有成员函数 std::cout << "我叫" << name << ",今年" << age << "岁。" << std::endl; }};

    public: 表示其后的成员可被类外直接访问。

    成员变量:name和age用于存储学生信息。

    成员函数:introduce()用于输出学生信息。

2. 对象的创建与使用

类是模板,对象是类的实例。通过对象访问类的成员。

  • 创建对象:int main() { Student s1; // 创建对象s1 s1.name = "小明"; // 赋值公有成员变量 s1.age = 18; s1.introduce(); // 调用公有成员函数 return 0;}

    输出结果:我叫小明,今年18岁。

    说明

    使用类名 对象名;创建对象。

    通过点运算符.访问对象的公有成员。

3. 私有成员与封装

为提高安全性,通常将成员变量设为private,并通过公共的gettersetter函数访问它们,实现数据隐藏和封装。

  • 改进版Student类:class Student {private: std::string name; // 私有成员变量 int age;public: void setName(const std::string& n) { // setter函数 name = n; } void setAge(int a) { // setter函数(带合法性检查) if (a > 0) age = a; } void introduce() { std::cout << "我叫" << name << ",今年" << age << "岁。" << std::endl; }};

    优点:防止外部直接修改数据,确保数据合法性。

4. 构造函数

构造函数是特殊的成员函数,在创建对象时自动调用,用于初始化成员变量。

  • 添加构造函数的Student类:class Student {private: std::string name; int age;public: Student(const std::string& n, int a) { // 构造函数 name = n; age = a; } void introduce() { std::cout << "我叫" << name << ",今年" << age << "岁。" << std::endl; }};

    使用构造函数创建对象:int main() { Student s1("小红", 20); // 通过构造函数初始化 s1.introduce(); return 0;}

    输出结果:我叫小红,今年20岁。

5. 关键点总结
  • 类定义:使用class关键字,包含成员变量和函数。
  • 访问控制

    public:成员可被类外直接访问。

    private:成员仅限类内访问(默认权限)。

  • 对象创建:通过类名 对象名;实例化,使用.访问成员。
  • 封装:私有成员+公共接口(getter/setter)。
  • 构造函数:初始化对象时自动调用,简化初始化代码。
6. 完整示例#include <iostream>#include <string>class Student {private: std::string name; int age;public: // 构造函数 Student(const std::string& n, int a) : name(n), age(a) {} // setter函数 void setName(const std::string& n) { name = n; } void setAge(int a) { if (a > 0) age = a; } // 成员函数 void introduce() { std::cout << "我叫" << name << ",今年" << age << "岁。" << std::endl; }};int main() { Student s1("小红", 20); // 使用构造函数创建对象 s1.introduce(); Student s2; // 错误:未定义默认构造函数 // 正确做法:通过构造函数初始化或添加默认构造函数 return 0;}注意事项
  • 若类中定义了构造函数,编译器不再生成默认构造函数(无参构造函数)。若需无参初始化,需显式定义默认构造函数:Student() : name(""), age(0) {} // 默认构造函数
  • 多练习类的定义、对象创建、访问控制和构造函数的使用,以熟练掌握面向对象编程的基础。