㈠ 类的内联函数的实现应该放在哪里
�0�2�0�2�0�2 今天公司研发部举行会议,讨论执行代码审查事宜。在讨论到一条:头文件不能放函数实现代码,我提出异议:内联函数应该例外。同事反驳说:内联函数的实现也可放进cpp文件。我摆出我的理由:如果是类的内部使用该类的内联函数,函数实现放哪都行(头文件和cpp文件都可以);但是如果外部调用类的内联函数同时该函数的实现又是放在cpp中,那会出现错误。同事于是问我会出现错误,当时我也没答上来。于是大家就先略过再去讨论其它方面。 �0�2�0�2�0�2�0�2�0�2 晚上回去写代码测试一下,如果把内联函数的实现放在cpp文件而外部又调用这个函数的话,确实会出现这个函数无法识别的错误。测试办法如下:�0�2�0�2�0�2 新建一个CTest类,在头文件这样声明:class CTest{public:�0�2�0�2�0�2 CTest(void);
�0�2�0�2�0�2 ~CTest(void);
�0�2�0�2�0�2 inline int GetValue();
};在cpp文件这样实现:#include "test.h"
CTest::CTest(void){}CTest::~CTest(void){}inline int CTest::GetValue(){�0�2�0�2�0�2 return 0;
} 然后在main函数这样调用:#include "test.h"
int main( ){�0�2�0�2�0�2 CTest test;
�0�2�0�2�0�2 test.GetValue();
�0�2�0�2�0�2 getchar();
}不出意外的话应该会出现下面的链接错误:1>TestSort.obj : error LNK2019: unresolved external symbol "public: int __thiscall CTest::GetValue(void)" (?GetValue@CTest@@QAEHXZ) referenced in function _main
1> F:/MyTest/MyTest/src/Debug/TestSort.exe : fatal error LNK1120: 1 unresolved externals要解决这个错误,需要把CTest类的GetValue函数放回CTest类的头文件。如下:// test.h
#pragma once
class CTest{public:�0�2�0�2�0�2 CTest(void);
�0�2�0�2�0�2 ~CTest(void);
�0�2�0�2�0�2 int GetValue()
�0�2�0�2�0�2 {
�0�2�0�2�0�2�0�2�0�2�0�2�0�2 return 0;
�0�2�0�2�0�2 }
}; 或者是这样:// test.h
#pragma once
class CTest{public:�0�2�0�2�0�2 CTest(void);
�0�2�0�2�0�2 ~CTest(void);
} �0�2�0�2�0�2 《高质量C++编程》的作者林锐博士推荐后一种做法,认为后者是一种良好的编程风格。
㈡ 类函数的实现在类里吗
通常分开实现,这样便于接口与实现分开,因为你可能不愿意把你的核心代码暴露给使用者。例如:(你拿去试试吧,不明白hi我)
声明在头文件中,如a.h
实现在cpp文件中,如a.cpp
测试用的主文件test.cpp
// a.h
#ifndef A_H
#define A_H
class A
{
public:
A();
~A();
void display(void);
int m1;
int m2;
};
#endif
// a.cpp文件
#include "a.h" // 包含头文件
#include<iostream>
using namespace std;
A::A():m1(0),m2(0){} // 构造函数实现
void A::display(void){ // display成员函数实现
cout << "m1 = " << m1 <<"\nm2 = " << m2 <<endl;
}
A::~A(){} // 析构函数实现
// test.cpp
#include "a.h"
void main()
{
A a;
a.display();
}
输出:
m1 = 0
m2 = 0
㈢ C++ 点H文件可以写函数具体实现吗
可以啊,但是那不是一个很好的习惯。
不过比如内联、模板之类的通常你都必须写在.h中,特殊情况除外啊。
㈣ c语言能不能在一个文件中写一个函数,然后再另一个文件中调用
当然可以啦。x0dx0a举个例子吧:两个文件 main.c function.cx0dx0a我们在function.c 中写一个函数 func();x0dx0a与此同时,我们需要写一个.h文件来声明这个函数,即function.hx0dx0a// 以下是function.h 的内容x0dx0a#ifndef __FUNCTION_H__x0dx0a#define __FUNCTION_H__x0dx0ax0dx0avoid func();x0dx0a#endifx0dx0ax0dx0a// 以下是function.c 的内容x0dx0a#include "function.h"x0dx0ax0dx0avoid func()x0dx0a{x0dx0a // do somethingx0dx0ax0dx0a}x0dx0ax0dx0a这样一来,我们想要在另外一个文件,也就是main.c 中调用这个函数的时候,只需要包含它对应的头文件,就可以直接调用了。x0dx0a// 以下是main.c 的内容x0dx0a#include "stdio.h"x0dx0a#include "function.h"x0dx0ax0dx0aint main()x0dx0a{x0dx0a func();x0dx0ax0dx0a return 0;x0dx0a}
㈤ C语言中,如何把一个函数的结果存放在文本文件中,并且不写在主程序内
看了你和别人的交流 直接上个代码吧
folatfun(floatx);
floata,b;
main(){
scanf("输入x",&a);
b=fun(a);
printf("x=%f",b);}
floatfun(floatx){
floatret;
FILE*fp;
if(x<-1)ret=x;
if(x>=-1)ret=x*2;
fp=fopen("result.txt","w");
fprintf(fp,"x=%f",ret);
returnret;
}
这样就是你要求的了
主函数不变 在fun中返回同时输入到文件 然后主函数正常输出
㈥ c++ 怎么把子函数写在独立文件中
1 可以通过头文件来实现
具体是把函数的声明写在头文件(.h)里
函数的定义写在源文件(.cpp)里
在要使用该函数的源文件中 使用#include "含有该函数的头文件" 来引入进而使用
2 一个小示例来说明
该示例包含3个文件,分别是Source.cpp、Funs.h和Funs.cpp
//Source.cpp文件
#include"Funs.h"
#include<stdio.h>
intmain(){
inta=12,b=9;
intc=max(a,9);
printf("%d和%d中的最大值为:%d ",a,b,c);
getchar();
return0;
}
//Funs.h文件
#ifndefFUNS_H
#defineFUNS_H
/*求两个数的最大值函数*/
intmax(int,int);
#endif
//Funs.cpp文件
/*求两个数的最大值函数*/
intmax(inta,intb){
returna>b?a:b;
}
3 运行结果如下
㈦ c语言怎么将数据写入文件
可以使用C语言中的文件操作函数,将数据写入文件。具体如下
一、打开文件。
使用fopen函数。格式为:
FILE *fopen(const char *name, const char * mode);
其中name为要写入的文件名,mode为格式字符。要写入文件,mode可以是:
1、 "w" 只写方式,文本形式输入;
2、"wb" 只写方式,二进制形式输入;
3、"wb+" 读写方式,二进制形式输入;
4、"w+" 读写方式,文本形式输入;
5、"a" 追加方式,写入文件结尾,文本形式输入;
6、"ab" 追加方式,写入文件结尾,二进制形式输入;
7、"ab+" 追加方式,可读写,写入文件结尾,二进制形式输入;
8、"a+" 追加方式,可读写,写入文件结尾,文本形式输入;
二、写入数据。
可以使用各种写入函数,向文件写入。 如打开的文件指针为fp,可以使用如下函数:
1、 fputc, 写入一个字符。声明为:
int fputc(int ch, FILE *fp);
2、fputs, 写入一个字符串,声明为:
char * fputs(const char *str, FILE *fp);
3、fprintf,格式化写入,功能和printf类似。 声明为:
int fprintf(FILE *fp, const char *fmt, ...);
4、 fwirte, 按块写入二进制数据,声明为:
int fwirte(char *buf, int block_size, int block_number, FILE *fp);
三、写入完毕后,调用fclose关闭文件:
int fclose(FILE *fp);
㈧ c语言能不能在一个文件中写一个函数,然后再另一个文件中调用
当然可以啦。
举个例子吧:两个文件 main.c function.c
我们在function.c 中写一个函数 func();
与此同时,我们需要写一个.h文件来声明这个函数,即function.h
// 以下是function.h 的内容
#ifndef __FUNCTION_H__
#define __FUNCTION_H__
void func();
#endif
// 以下是function.c 的内容
#include "function.h"
void func()
{
// do something
}
这样一来,我们想要在另外一个文件,也就是main.c 中调用这个函数的时候,只需要包含它对应的头文件,就可以直接调用了。
// 以下是main.c 的内容
#include "stdio.h"
#include "function.h"
int main()
{
func();
return 0;
}
㈨ 函数实现代码可以写在头文件中吗
一般来说头文件是用来声明,cpp是实现,如果什么没变,实现变了,依赖这个类的地方就不用重新编译了。
还有如果是声明和定义都写在一起,编译器默认认为它是inline,生成的2进制代码比较多
㈩ python 如何让一个函数的输出写入到一个文件中
首先导入sys模块
import sys
然后在打算把输出数据写入文件的代码之前加上以下代码
output=sys.stdout
outputfile=open(filename,'w')
sys.stdout=outputfile
上面的filename表示输出文件
程序结束或恢复成正常输出时加上以下代码
outputfile.close()
sys.stdout=output
恢复输出为开始保存的正常输出值