You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++构造函数与成员函数无法执行的问题排查

问题分析与解决

你的核心问题是类的定义与实现分离错误,导致实际调用的是空函数:

  • test.h里定义了一个空实现的Test类(构造函数和print都是空的),而test.cpp里又重新定义了一个全新的Test类,这属于重复定义,且main.cpp包含的是test.h,所以运行时执行的是头文件里的空函数,自然没有输出。
  • C++规范中,头文件只负责类的声明,成员函数的实现要放在cpp文件中,不能在cpp里重新定义整个类。

修正后的代码

test.h(仅类声明)

#pragma once
#include <iostream> // 需包含std::cout依赖的头文件

class Test
{
public:
    Test();          // 构造函数声明
    void print();    // print函数声明
};

test.cpp(成员函数实现)

#include "test.h"

// 实现构造函数
Test::Test() {
    std::cout << "cout from constructor\n";
}

// 实现print函数
void Test::print() {
    std::cout << "cout from print function\n";
}

main.cpp(调用逻辑)

#include <iostream>
#include <string>
#include "test.h"

int main()
{
    std::cout << "cout from main.cpp\n";

    Test t;
    t.print();

    return 0;
}

编译注意事项

  • 确保编译时将main.cpp和test.cpp一起编译,比如使用g++命令:g++ main.cpp test.cpp -o main.exe
  • 在VS或VSCode中,要把test.cpp添加到项目文件列表中,否则编译器只会编译main.cpp,依旧会使用头文件的空实现。

内容的提问来源于stack exchange,提问作者coldfusion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 14:50:02