zoukankan      html  css  js  c++  java
  • C++中的术语

    1 声明式:所谓声明式是告诉编译器某个东西的名称和类型,但忽略细节。下面都是声明式:

    extern int x;                 //对象(object)声明式 记住:变量的声明加extern关键字
    std::size_t numDigits(int numbers);  //函数(function)声明式
    class Widget;                  //类(class)声明式
    template<typename T>   //模板(template)声明式
    class GraphNode;       

    每个函数的声明揭示其签名式,也就是参数和返回类型。一个函数的签名等同于该函数的类型。numDigits函数的签名是std::size_t (int),也就是说“这函数获得一个int并返回一个std::size_t".

    2 定义式:定义式的任务是提供编译器一些声明式所遗漏的细节。对对象而言,定义式是编译器为此对象拨发内存的地点。对function或function template而言,定义式提供了代码本体。对class或class template而言,定义式列出它们的成员。

    3 初始化是“给予对象初值”的过程。对用户自定义类型的对象而言,初始化由构造函数执行。所谓default构造函数是一个可被调用而不带任何实参者。这样的构造函数要不没有参数,要不就是每个参数都有缺省值。

    如果构造函数被声明为explicit,这可阻止它们被用来执行隐式类型转换,但它们仍可被用来进行显示类型转换。

    void doSomething(B bObject); //函数,接受一个类型为B的对象
    B bObj1;  //一个类型为B的对象
    doSomething(bObj1);  //没问题,传递一个B给doSomething 函数
    B bObj2(28); 
    doSomething(28);  //错误,DoSomething应该接受一个B而不是一个int,而int和B之间并没有隐式转换
    doSomething(B(28));  //没问题,使用B的构造函数将int显式转换

    被声明为explicit的构造函数通常比其non-explicit兄弟更受欢迎,因为它们禁止编译器执行非预期(往往也不被期望)的类型转换。

    4 copy构造函数被用来“以同类型对象初始化自我对象”,copy assignment操作符被用来“从另一个同型对象中拷贝其值到自我对象”;

    class Widget{
    public:
        Widget(); //default构造函数
        Widget(const Widget &rhs);   //copy构造函数
        Widget& operator=(const Widget& rhs);  //copy assignment 操作符
    };
    
    Widget w1;  //调用default构造函数
    Widget w2(w1);  //调用copy构造函数
    w1=w2;  //调用copy assignment操作符

    当你看到赋值符号时请小心,因为“=”语法也可以用来调用copy构造函数

    Widget w3=w2;  //调用copy构造函数

    幸运的是“copy构造”和容易和“copy赋值”有所区别。如果一个新对象被定义(例如以上语句中的w3),一定会有个构造函数被调用,不可能调用赋值操作如果没有新对象被定义(例如前述的“w1=w2”语句),就不会有构造函数被调用,那么当然就是赋值操作被调用

    copy构造函数是一个尤其重要的函数,因为它定义了一个对象如何passed by value(以值传递)。如果进行pass-by-reference-to-const(传引用),往往不需要调用copy构造函数。

  • 相关阅读:
    初识Jmeter
    【性能/接口测试】【Jmeter】保存响应内容
    【Java-jxl插件】【Excel文件读写报错】jxl.read.biff.BiffException: Unable to recognize OLE stream
    随机生成九宫格图形密码-实现
    转载:测试人员的挑战
    运行UI自动化脚本报错,和appium server连接出现问题
    Jenkins容器无法执行docker命令
    【接口测试】使用httpClient获取cookies+携带获取的cookies访问get接口
    【Nginx】安装&环境配置
    【PostMan】批量参数化的用法 之 text/csv
  • 原文地址:https://www.cnblogs.com/wuchanming/p/4049175.html
Copyright © 2011-2022 走看看