zoukankan      html  css  js  c++  java
  • [c++] 声明

    注意事项

    • 变量定义时就会赋初值(如int是0),所以定义包含声明,单纯声明不定义的话,要加extern
    • 同一个文件中,函数使用(调用)前必须定义(有{ }为定义),否则会报错;若先使用再定义,或定义和使用不在一个文件,需声明以告诉编译器(不要报错,会在之后定义),因为编译器只对一个文件进行编译
    • 同一个文件中,类使用(实例化)前必须定义(有{ }为定义),否则要声明。同一个类,定义、声明、使用可能在三个文件中完成
    • 永远不要在.h文件中定义变量。定义变量和声明变量的区别在于定义会产生内存分配的操作,是汇编阶段的概念;而声明则只是告诉包含该声明的模块在连接阶段从其它模块寻找外部函数和变量
    • 函数、类定义时不会分配内存,类实例化时会为变量分配内存
    • 总结:使用前定义,否则声明

    例1:一个project中包含三个文件

    test1.cpp

    #include <stdio.h>
    #include "test2.h"
    int main(){
        printf("a=%d
    ",a);
        return 0;
    }

    test2.h

    extern int a;

    test2.cpp

    int a = 10;

    >>a = 10

    例2:

    写法一:

    //=============A.h start====================
    #include <B.h>
    class A
    {
    private:
      B * impl;
    };
    //=============A.h end====================

    写法二:

    //=============A.h start====================
    class B;

    class A
    {
    private:
      B * impl;
    };
    //=============A.h end====================

    //=============A.cpp start====================

    #include <A.h>
    #include <B.h>
    // 其他具体实现

    ........

    //=============A.cpp end====================
    写法一是使用前定义;写法二是使用前声明,随后定义

    参考:

    https://blog.csdn.net/skk18739788475/article/details/79643978

    https://blog.csdn.net/CC_20171030/article/details/78557723

  • 相关阅读:
    angularJs中ngModel的坑
    Angular中ngModel的$render的详解
    typescript中的工具 tsd
    angula组件-通过键盘实现多选(原创)
    angular指令系列---多行文本框自动高度
    微信公众号系列 --- ionic在IOS的键盘弹出问题
    angular Jsonp的坑
    关于js的一些基本知识(类,闭包,变量)
    介绍Angular的注入服务
    2019 SDN大作业
  • 原文地址:https://www.cnblogs.com/cxc1357/p/11809832.html
Copyright © 2011-2022 走看看