• 【effective c++读书笔记】【第0章】导读


    1、 所谓声明式(declaration)是告诉编译器某个东西的名称和类型,但略去细节。所谓定义式(definition)是提供编译器一些声明式所遗漏的细节。对对象而言,定义式是编译器为此对象拨发内存的地点。对function或function template而言,定义式提供了代码本体。对class或class template而言,定义式列出它们的成员。

     //声明式
    extern int x;
    std::size_t numDigits(int number);
    class Widget;
    template<typename T>
    class GraphNode;
    
    //定义式
    int x;
    std::size_t numDigits(int number){
    	std::size_t digitsSoFar = 1;
    	while ((number /= 10) != 0) ++digitsSoFar;
    	return digitsSoFar;
    }
    class Widget{
    public:
    	Widget();
    	~Widget();
    	...
    };
    template<typename T>
    class GraphNode{
    public:
    	GraphNode();
    	~GraphNode();
    	...
    };
    

    2、所谓default构造函数是一个可被调用而不带任何实参者。这样的构造函数要不没有参数,要不就是每个参数都有缺省值。构造函数被声明为explicit,可阻止它们被用来执行隐式类型转换,但仍可被用来进行显示类型转换。

    class A{
    public:
    	A();//default构造函数
    };
    class B{
    public:
    	explicit B(int x = 0, bool b = true); //default构造函数
    };
    

    3、copy构造和copy赋值很容易区别。如果一个新对象被定义,一定会有个构造函数被调用,不可能调用赋值操作。如果没有新对象被定义,就不会有构造函数被调用,那么当然就是赋值操作被调用。pass-by-value意味着“调用copy构造函数”。

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

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    微信小程序 单选按钮 最佳
    微信小程序 单选按钮的实现
    微信小程序 单选框实现
    Java Code To Create Pyramid and Pattern
    Java language
    npm Err! Unexpected end of JSON input while parsing near
    Node.js Express FrameWork Tutorial
    Higher-Order Function Examples
    Create First HTTP Web Server in Node.js: Complete Tutorial
    Node.js NPM Tutorial: Create, Publish, Extend & Manage
  • 原文地址:https://www.cnblogs.com/ruan875417/p/4785450.html
Copyright © 2020-2023  润新知