const成员-拷贝构造函数(copy constructor)

const成员

  • const成员:被const修饰的成员变量、非静态成员函数
  • 必须类里面初始化
class Car {
public:
    const int m_price = 0;    //const常量设置
    Car() :m_price(0) {}    //也可以在构造函数中初始化
    void run() const {    //const一般写最后
        cout << "run()" << endl;

        m_price = 10;
    }
};

const成员函数

  • 两个同名函数构成了重载
void run() const {}
void run() {}

引用类型成员变量必须初始化

int age;
int & m_price = age;
car(int &price) :m_price(price) {}

拷贝构造函数(copy constructor)

  • 拷贝构造函数是构造函数的一种
  • 当利用已存在的对象创建一个新对象时(类似于拷贝),就会调用新对象的拷贝构造函数进行初始化
//拷贝构造函数
Car(const Car &car) {
    cout << "Car(const Car &car)" << endl;
}
Car car4(car3);

原文地址:https://www.cnblogs.com/sec875/p/12328947.html

时间: 2024-10-07 18:14:44

const成员-拷贝构造函数(copy constructor)的相关文章

(C++)关于拷贝构造函数 Copy Constructor

题目: In which of the following scenarios is a Copy Constructor called or invoked? A.    When no conversion function exists for converting the class object to another class object B.    When an existing object is assigned an object of its own class C. 

C++编译器合成默认构造函数和复制控制成员(拷贝构造函数,赋值操作符,析构函数)的条件

(参考自<深入理解C++对象模型>) ”C++新手一般有两个常见的误解: 任何class如果没有定义default constructor,就会被合成一个出来. 编译器合成出来的default constructor会明确设定class 内每一个data member的默认值.” 现在主要解释第一条为什么是错误的,根据<深入理解C++对象模型>,”default constructor 在需要的时候被编译器产生出来”,以下就是4种”需要的时候”: 1). 该类含有一个成员对象而后者

C++类的拷贝构造(Copy constructor)函数隐藏陷阱

好长时间没写C++了,今天写了个很简单的String类,竟然调试了半天,最终发现了一个十分隐蔽的陷阱,写出来供大家分享. C++中类的拷贝构造函数的作用就是通过类的一个对象来实例化另一个对象.下面是我写的一个MyString类,头文件MyString.h: #include <iostream> using namespace std; class MyString { public: MyString(); MyString(const MyString& str);//这里就是我们

【转】 c++拷贝构造函数(深拷贝,浅拷贝)详解

c++拷贝构造函数(深拷贝,浅拷贝)详解 2013-11-05 20:30:29 分类: C/C++ 原文地址:http://blog.chinaunix.net/uid-28977986-id-3977861.html 一.什么是拷贝构造函数      首先对于普通类型的对象来说,它们之间的复制是很简单的,例如: int a=100; int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量.  下面看一个类对象拷贝的简单例子. #include<iostream

c++拷贝构造函数(深拷贝,浅拷贝)详解

一.什么是拷贝构造函数      首先对于普通类型的对象来说,它们之间的复制是很简单的,例如: int a=100; int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量.  下面看一个类对象拷贝的简单例子. #include<iostream> using namespace std; class CExample { private: int a; public: //构造函数 CExample(int b) { a=b; printf("con

CPP_类默认函数:构造函数,拷贝构造函数,赋值函数和析构函数

类默认函数:构造函数,拷贝构造函数,赋值函数和析构函数 class Person{ public : Person():age(10), name(NULL); Person(int myage, char *myname); Person(const Person &a); ~Person(void); void set_age(int myage); void get_age(void); void set_other_age(Person &a, int b); private: i

C++中构造函数,拷贝构造函数,析构函数

C++中默认构造函数就是没有形参的构造函数.准确的说法,按照<C++ Primer>中定义:只要定义一个对象时没有提供初始化式,就是用默认构造函数.为所有 的形参提供默认实参的构造函数也定义了默认构造函数. 合成的默认构造函数,即编译器自动生成的默认构造函数.<C++ Primer>中的说明:一个类哪怕只定义了一个构造函数,编译器也不会再生成默认构造函数.这条规则的根据是,如果一个类再某种情况下需要控制对象初始化,则该类很可能在所有情况下都需要控制.只有当一个类没有定义构造函数时,

C++-copy constructor、copy-assignment operator、destructor

对于一个类来说,我们把copy constructor.copy-assignment operator.move constructor.move-assignment operator.destructor统称为copy control. 今天我们先来聊聊其中的copy constructor.copy-assignment operator的destructor这三个. copy constructor copy constructor:一个constructor如果他的第一个参数是对类的

赋值运算符重载和拷贝构造函数 AND 浅拷贝与深拷贝

赋值运算符重载: 是用一个已经存在的对象去给另一个已经存在并初始化(调用过构造函数)的对象进行赋值. 拷贝构造函数:其实本质还是构造函数,用一个已存在的对象去构造一个原先不存在的对象. string a("hello"); string b("world"); string c =a ;   //拷贝构造函数 c = b;           //调用赋值函数 一般来说是在数据成员包含指针对象的时候,应付两种不同的处理需求的 一种是复制指针对象,一种是引用指针对象