CodeBlocks中类分文件实现疑问:运行输出‘hi’是否异常?
分文件编写C++类输出"hi"是否符合预期?
当然符合预期啦!咱们来一步步拆解为什么会出现这个结果:
首先先梳理你的代码逻辑:
你搭建了一套标准的C++分文件类结构:
clasa.h:负责类的声明,定义了clasa类的无参构造函数原型clasa.cpp:负责类的实现,你在这里把构造函数的具体逻辑写了出来——输出字符串"hi"main.cpp:程序入口,在这里创建了clasa类的对象obj
具体执行流程:
- 当程序运行到
main函数里的clasa obj;这一行时,C++会自动调用clasa类的无参构造函数来初始化这个对象 - 你在
clasa.cpp里已经实现了这个构造函数,代码就是cout<<"hi";,所以构造函数执行时就会直接在控制台输出"hi" - 你用
#pragma once保护了头文件,避免了重复包含的编译错误,这部分的写法非常规范 - 三个文件都加入Code::Blocks项目后,编译器会正确完成编译和链接,把类的声明和实现关联起来,所以运行时能顺利执行构造函数里的输出逻辑
如果后续你不想在创建对象时自动输出内容,可以把输出逻辑放到一个单独的成员函数里,比如:
// clasa.h里添加成员函数声明 class clasa { public: clasa(); void sayHi(); // 新增成员函数 }; // clasa.cpp里实现 void clasa::sayHi() { cout << "hi"; } // main.cpp里调用 int main() { clasa obj; obj.sayHi(); // 主动调用才输出 return 0; }
这样只有主动调用成员函数时才会输出内容。
内容的提问来源于stack exchange,提问作者learn-from-mistaks
相关产品推荐
相关产品推荐

