C++为什么可以在类里面使用类后声明的全局函数

C++为什么可以在类里面使用类后声明的全局函数,C++编译单个文件不是自上而下的吗?

你好,c++ 是不可以调用在后面声明的方法的,要先声明(可以不实现)才可以。

但是类中可以上下调用。给你两个代码,你看看

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-08-29
在log.h中只写函数的声明
另外建立一个log.cpp的文件,把函数的实现都移到这个cpp文件中去就可以了。
全局函数就是可以被其他文件中函数调用,比如一个大型程序,由很多人来共同编写,每个人写的程序为一个文件,全局函数就可以被另一个文件中的程序调用,声明函数时不管写没写extern都默认为全局函数,如果不想被其他人调用,可以用static来定义,就只能被本文件程序调用
全局函数是定义在类外的函数,成员函数就是定义在类中的函数。追问

您好,我是在说调用顺序,比如:
class A{
void a(){
test() ;
}
}
void test(){
}
这样写没问题,但是这样写就有问题:
void test(){
test2() ;
}
void test2(){
}
所以我想问一下这个,C++编译器编译的过程,非常感谢

本回答被网友采纳
第2个回答  2019-08-30
如果全局函数的定义在类后,而类里要使用这个函数的话,只需在类的前面前向声明这个函数就行了。如:
//前向声明
void f();
class C
{
public:
void callf()
{
//调用f
f();
}
};
//定义f
void f()
{
//...
}
第3个回答  2019-08-29
应该分为3个文件,一个头文件存储结构体定义供其它.c文件使用,一个.c文件中定义全局变量,另一个.c文件中声明使用全局变量,并通过函数修改该全局变量

a.h //存放结构体定义
#ifndef _A_H
#define _A_H 1
struct motor
{
INT16S goal_speed;//
INT16S current_speed;//
};
#endif

def.c //文件用来定义全局变量(注意不是声明,定义是要分配内存的)
#include "a.h"
struct motor mymotor;
//加入其它处理代码

call.c //用来实现操作全局变量的函数
#include "a.h"
extern struct motor mymotor; //这是引用外部变量的前置声明,否则直接使用单独编译该文件时会提示变量未定义
void refresh_status(struct motor *ptr);//状态刷新函数
{
INT16S i;
i=ptr->goal_speed - ptr->current_speed;//这里做减法运算
}

调用方式
refresh_status(&mymotor);

C++为什么可以在类里面使用类后声明的全局函数
你好,c++ 是不可以调用在后面声明的方法的,要先声明(可以不实现)才可以。但是类中可以上下调用。给你两个代码,你看看

C++类内函数相互调用
如果考虑你纠结的问题,那绝大多数类的写法都过不了编译,因为习惯上在类名后的public:后就写构造函数了,而常常这构造函数就要操作类中的private数据成员,而这private数据成员偏偏习惯上又是放在类的最后才声明的。这完全是个人理解,没有权威性,只供参考……...

...为什么只有const static 整型变量才可以在类中定义并复赋值?_百 ...
因为只有const static 变量是会全局保存的,即时你的类析构释放掉了,这些变量会依然保存在内存中 如果是非Const的变量,他会随着你的类的释放而释放 因此对于普通的变量,应该在构造函数中赋值

c++中引用其它文件中的全局变量和全局函数时为什么不用extern,对头文件...
头文件的#include指令相当于将后面跟的.h文件的全部内容插入到声明#include的地方,所以是不需要再用extern的。至于其它的已经不算是一个问题,所以我不必回答你。

C++,可以在main函数中定义类吗,而不是在main函数外?
可以。不仅是main函数,所有函数都可以。不过在函数中定义的类只能在这个函数中被访问到。而且如果全局还声明了一个同名的类,在函数中定义的这个类与全局的类不是同一个类,在函数体范围内前者会隐藏后者。样例:struct s {int a;};void g() { struct s {char *p;}; \/\/局部类s隐藏了全局类 ...

C\/C++怎么在某个函数中声明或定义全局变量?全局变量有没有这样使用的...
全局变量的定义只能在函数外部,不能在函数内部。当要使用其他文件里的定义的全局变量时,可以用关键字extern,格式是 [extern 类型 变量名;]希望对你有帮助。

c++类中,可以定义main函数吗
可以在类中或者名字空间中定义main函数,但是这个main函数与全局的main函数不是同一个函数,所以不是程序入口点。全局范围的main函数是程序的主函数,而且不能在全局范围内重载!

如何在c++\/CLI声明一个全局数组
类中的静态变量的话,在类的实例化之前赋值就好了。就是你说的那个声明在public中,然后赋值的话,直接在.h中声明的时候就可以赋值;或者在构造函数的实例化列表里面赋值,public: static array<String> s_chinese_number({"一","二","三","四","五","六","七","八","九","十","十一...

在c++里,全局函数和成员函数的区别是什么,主函数如何调用全局函数,请举...
全局函数就是定义在类外的函数,成员函数就是定义在类中的函数。调用函数举例:void swap(ref int a,ref int b){ int temp=a;b=temp;a=b;} void main(){ int a=3,b=4;swap(a,b) \/\/此即调用函数 Console.WriteLine("a={0},b={1}",a,b);} ...

c++中怎样定义变量,使之在类和主函数,普通函数等都可以使用_百度...
要在类中能使用,就得定义public成员变量,主函数和普通函数能使用的变量,在主函数和普通函数前定义就可以了。。

相似回答