当前位置: 首页 > news >正文

c++ 类的语法1

类的语法老是记不住,随意写了一个demo, 头文件DemoClass.h文件如下:

#pragma once
class DemoClass
{
private:unsigned m_c;int* m_d;int a;double b;public:DemoClass(); // 默认构造函数. 若用户未定义任何构造函数,编译器才会生成默认构造函数DemoClass(int a, double b); // 带参构造函数//DemoClass(unsigned c, int* d) : m_c(c), m_d(d); // 编译不过, 构造函数声明中‌不能直接写初始化列表‌,初始化列表应仅在类外定义时使用‌。DemoClass(unsigned c, int* d);~DemoClass(); // 析构函数void print() const;
};

源文件DemoClass.cpp内容如下:

#include "DemoClass.h"
#include <iostream>// 内置类型(如 int、unsigned、指针)不会自动初始化,其值为未定义,可能导致未预期行为‌. 所以必须显式初始化所有成员变量。 除非没有成员变量。
DemoClass::DemoClass() : m_c(0), m_d(nullptr), a(0), b(0.0) // 冒号后面初始化参数列表
{ std::cout << "invoke default constructor " << std::endl;
}DemoClass::DemoClass(int a, double b)
{// 也可以用this指针在函数体内部初始化成员变量this->a = a;this->b = b;this->m_c = 0;this->m_d = nullptr;std::cout << "invoke second constructor " << std::endl;
}DemoClass::DemoClass(unsigned c, int* d) : m_c(c), m_d(d){this->a = 0;this->b = 0.0;std::cout << "invoke third constructor " << std::endl;
}DemoClass::~DemoClass() // 释放内存用
{delete m_d; // 注意:不要释放栈内存,即这个指针不能是函数中的局部变量,否则运行是报错。
}void DemoClass::print() const // const表示只读函数,不修改成员变量。 const 函数只能调用其他 const 成员函数,否则会破坏常量性承诺。
{std::cout << "a: " <<  a << ", b: " << b << ", m_c: " << m_c << ", m_d: " << m_d << std::endl;
}

测试代码:

void testClass() {DemoClass demo1;DemoClass demo2(1, 0.1);int* d = new int(9527); // new关键字在堆上分配内存,用完需释放。这里是传到对象里了,在类的析构函数里调用了释放该内存。DemoClass demo3(3, d);demo1.print();demo2.print();demo3.print();
}

打印:

ok

相关文章:

  • 大学英语四级选词填空练习题解析
  • asp.net core webapi+efcore
  • 实现AWS Step Function安全地请求企业内部API返回数据
  • Windows Server .NET Core 应用程序部署到 IIS 解决首次访问加载慢的问题
  • 谷歌称LLMs.txt类似于关键词元标签:SEO影响与应对策略
  • 【轻松学会使用Redis基础命令】
  • 数据结构实验7.2:二叉树的基本运算
  • 直线轴承的正确安装方式是什么?
  • 服务治理-服务发现和负载均衡
  • Windows使用SonarQube时启动脚本自动关闭
  • 详解与HTTP服务器相关操作
  • (9)VTK C++开发示例 --- 计算两点之间的距离
  • 分享一个DeepSeek+自建知识库实现人工智能,智能回答高级用法。
  • 精益数据分析(4/126):开启数据驱动的创业之旅
  • Leakcanary框架分析:他是如何检测内存泄漏的?四大引用;Heap Dump的实现,设计原则
  • 深度学习在语音识别中的应用
  • 性能比拼: Deno vs. Node.js vs. Bun (2025版)
  • LLM做逻辑推理题 - 如何找出不标准的球?
  • Rabbitmq集群重启操作
  • 交易系统的构建与实战法则
  • 西藏艺术来到黄浦江畔,“隐秘之门”艺术展外滩三号开幕
  • 科普|军团菌肺炎:春末夏初的隐形健康威胁
  • 美国税局代理局长卷入马斯克与美财长之争,还未工作就被迫离职
  • 外交部:中国将深化同柬埔寨等周边国家友好合作,携手推进亚洲现代化进程
  • 地铁口被吐槽像棺材?杭州地铁公司回应:是一个标志性出入口
  • 跨境电商敦煌网在美下载量飙升,如何接住美国用户的“流量”?