当前位置:   article > 正文

C++面向对象-new一个对象出来_c++ new 撖寡情

c++ new 撖寡情

目录

零. 简介

一. new  和 不 new 的区别

二. 访问修饰符

三.类构造函数 & 析构函数

构造函数:

a.无参

b.有参

析构函数:

四.总结示例


零. 简介

在 C++中,类(Class)是一种用户自定义的数据类型,它用于描述具有相似属性和行为的对象。

类定义了对象的属性(成员变量)和行为(成员函数)。

对象(Object)是类的实例,它是根据类的定义创建的具体实体。

一. new  和 不 new 的区别

在 C++中,不使用 new 直接声明对象和使用 new 动态分配内存创建对象有以下一些区别:

  1. 内存分配时机:不使用 new 是在栈上分配内存,而使用 new 是在堆上分配内存。
  2. 内存管理:栈上的内存由编译器自动管理,对象超出作用域时自动销毁。而堆上的内存需要手动使用 delete 释放。
  3. 大小限制:栈的空间通常有限,而堆的空间相对较大。
  4. 生命周期:栈上对象的生命周期与作用域相关,而堆上对象的生命周期由程序员控制。

以下是一个示例代码,展示了使用 new 和不使用 new 的区别:

  1. // 不使用 new
  2. 猫 小红; // 在栈上创建对象
  3. // 使用 new
  4. 猫 *小红指针 = new 猫; // 在堆上创建对象

二. 访问修饰符

C++ 中的访问修饰符用于控制类成员(包括成员变量和成员函数)的访问权限。常见的访问修饰符有:

  1. public:表示公有访问权限,允许在类外部访问。
  2. protected:表示保护访问权限,只能在类自身和派生类中访问。
  3. private:表示私有访问权限,只能在类内部访问。

以下是一个示例代码,展示了不同访问修饰符的使用:

  1. class Student {
  2. public: //公开
  3. void setName(const std::string& name) { m_name = name; }
  4. protected: //保护
  5. std::string m_name;
  6. private: //私有
  7. int m_age;
  8. };

调用:

三.类构造函数 & 析构函数

构造函数

  • 用于创建对象时进行初始化。
  • 可以有默认构造函数、带参数的构造函数等。

示例代码:

a.无参

  1. class Student {
  2. public:
  3. Student() {
  4. std::cout << "Default constructor called." << std::endl;
  5. }
  6. };

b.有参

代码

  1. #include<iostream>
  2. #include<vector>
  3. #include <string>
  4. class Student {
  5. public: //公开
  6. Student(std::string name) {
  7. m_age = 18;
  8. m_name = name;
  9. }
  10. void getName() {
  11. std::cout << "名字"<< m_name <<std::endl;
  12. std::cout << "年龄" << m_age << std::endl;
  13. }
  14. protected: //保护
  15. std::string m_name;
  16. private: //私有
  17. int m_age;
  18. };
  19. int main() {
  20. Student student("xiao hong");
  21. student.getName();
  22. return 0;
  23. }

析构函数

在对象销毁时被调用。

用于释放资源或进行其他清理工作。

示例代码:

  1. class Student {
  2. public:
  3. ~Student() {
  4. std::cout << "销毁" << std::endl;
  5. }
  6. };

代码

  1. #include<iostream>
  2. #include<vector>
  3. #include <string>
  4. class Student {
  5. public: //公开
  6. Student() {
  7. std::cout << "开始创建" << std::endl;
  8. std::cout << "构造函数" << std::endl;
  9. }
  10. ~Student() {
  11. std::cout << "销毁" << std::endl;
  12. std::cout << "析构函数" << std::endl;
  13. }
  14. };
  15. int main() {
  16. // Student student ("xiao hong");
  17. Student* student = new Student();
  18. delete(student);
  19. return 0;
  20. }

四.总结示例

代码:

  1. #include<iostream>
  2. #include<vector>
  3. #include <string>
  4. class Student {
  5. public: //公开
  6. std::string m_name;
  7. Student() {
  8. std::cout << "开始创建" << std::endl;
  9. std::cout << "构造函数" << std::endl;
  10. m_age = 18;
  11. }
  12. ~Student() {
  13. std::cout << "销毁" << std::endl;
  14. std::cout << "析构函数" << std::endl;
  15. }
  16. void GetName() {
  17. std::cout << "名字" << m_name << std::endl;
  18. std::cout << "年龄" << m_age << std::endl;
  19. }
  20. private:
  21. int m_age;
  22. };
  23. int main() {
  24. // Student student ("xiao hong");
  25. Student* student = new Student ;
  26. student->m_name = "xiao hong";
  27. student->GetName();
  28. delete(student);
  29. return 0;
  30. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/824919
推荐阅读
相关标签
  

闽ICP备14008679号