美文网首页
C++对象的初始化方式

C++对象的初始化方式

作者: LannisterWF | 来源:发表于2018-08-01 21:32 被阅读0次

对象初始化可以分为默认初始化、直接初始化、拷贝初始化以及值初始化。C++的类默认提供了六种函数:构造函数、析构函数、拷贝构造函数、等号重载函数、取值运算符、取值运算符const。为了实现这四种初始化方式,有可能需要重写这六个函数。
// 以下这两个类的效果相同
class Person
{}

class Person
{
public:
Person() {...} // deafault构造函数;
Person(const Person&) {...} // 默认拷贝构造函数
~Person() {...} // 析构函数
Person& operator = (const Person &) {...} // 赋值运算符
Person *operator &() {...} // 取值运算符
const Person *operator &() const {...} // 取值运算符const
}

1.默认初始化
如果定义变量时没有指定初值,则变量被默认初始化,此时变量被赋予了“默认值”。
int i;
A a;

2.直接初始化
如果不使用等号,则执行的是直接初始化。
int a(0);
string str1("hello");
string str2(10, 'c');//这种情况拷贝初始化不能完成
A a(pa);

3.拷贝初始化
如果使用一个等号初始化一个变量,实际上执行的是拷贝初始化。编译器会把等号右侧的初始值拷贝到新创建的对象中去。
int a = 0;
int a = {0};
string str1 = "hello";
A pa; A a = pa;

4.值初始化
值初始化仅限于容器类。
vector<int> v1(10);//v1有10个元素,每个的值都是0
vector<int> v2{10};//v2有1个元素,该元素的值是10
vector<int> v3(10, 1);//v3有10个元素,每个的值都是1
vector<int> v4{10, 1);//v4有2个元素,值分别是10和1

hear me roar!

相关文章

  • C++二义性 多态 纯虚函数 模版函数

    1.C++源码中对象初始化方式 std::string 对char *的封装 C++源码中对象初始化 2.虚继承 ...

  • [C++] 对象初始化的方式

    初始化对象 C++提供两种使用构造函数来初始化对象的方式。 第一种方式是显式的调用构造函数。(在栈上分配内存 另一...

  • C++拷贝构造函数总结

    C++的两种初始化方式 在阐述拷贝构造函数之前,先让我们来看一下C++支持的初始化方式。C++支持两种初始化方式。...

  • C++对象的初始化方式

    对象初始化可以分为默认初始化、直接初始化、拷贝初始化以及值初始化。C++的类默认提供了六种函数:构造函数、析构函数...

  • c++ python java

    c++ 初始化 C++类中成员变量的初始化有两种方式 - yu132563的专栏 - CSDN博客 C++ 变量初...

  • C++变量声明与定义

    一、变量的初始化方式 1、C、C++通用初始化方法 1、常用的初始化语法,沿用于C语言 2、C++特有的变量初始化...

  • 2020-07-21 类属性和对象属性 初始化

    对象属性初始化有3种方式: 声明对象属性时初始化 在构造方法中初始化 在初始化块中初始化 类属性初始化有2种方式:...

  • C++类对象初始化方式总结

    在《inside the c++ object model》一书中谈到copy constructor的构造操作,...

  • Cpp:new and delete

    1、动态创建对象的初始化 2、动态创建对象的默认初始化 可以利用下列方式进行默认初始化 3、撤销动态创建对象 C+...

  • Java基础之属性赋值方式

    赋值方式 默认初始化代码如下 显式初始化代码如下 构造器中初始化代码如下 有了对象以后,通过“对象.属性”或"对象...

网友评论

      本文标题:C++对象的初始化方式

      本文链接:https://www.haomeiwen.com/subject/hscdvftx.html