c++构造函数的初始化列表(翁恺c++公开课[13])

初始化列表形式:

class Point
{
private:
    const float x,y;
    Point(float xa = 0.0, flato ya = 0.0):y(ya),x(xa) {}
};

y(ya),x(xa)就是初始化列表的形式,而且是在构造函数被调用之前运行;

从此以后要用这种方式写构造函数的初始化。

原文地址:https://www.cnblogs.com/go-ahead-wsg/p/12210663.html

时间: 2024-08-08 21:58:38

c++构造函数的初始化列表(翁恺c++公开课[13])的相关文章

c++对象初始化(翁恺c++公开课[10])

c++对象初始化 就是去调用构造函数来完成初始化操作: 构造函数有无参数的构造函数.有参数构造函数.默认构造函数(编译器给我们实现的)...(拷贝构造函数之后说) 注意:默认构造函数只有在我们自己没有声明构造函数时编译器才会给我们制造一个没有参数的构造函数,如果我们定义了,编译器就不会管了 例子:看下边的C类,编译器并不会给我们初始化一个默认的构造函数 #include <iostream> class A //默认构造函数 A() 这是在编译时,编译器给我们实现的 { }; class B

C++ 初始化形式、变量初始化规则、类构造函数的初始化列表

类构造函数的初始化列表,举例 一个对象的构造分两部分,首先是分配空间,然后初始化. 只要有对象生成,不管是以什么形式生成,都会调用构造函数进行初始化. 然后下面有个例子,在蓝色区域Big类的复制构造函数中,使用初始化列表进行成员的初始化(方法1)没有问题,而如果不使用初始化列表.直接在函数里用里面注释掉的代码(方法2)则会报错:Base类没有合适的构造函数. // W3-课程作业2-4.cpp : Defines the entry point for the console applicati

构造函数、初始化列表来初始化字段、析构函数、拷贝构造函数

#include <iostream> using namespace std; class Line { public: int getLength( void ); Line( int len ); // 简单的构造函数 Line( const Line &obj); // 拷贝构造函数 ~Line(); // 析构函数 private: int *ptr; }; // 成员函数定义,包括构造函数 Line::Line(int len) { cout << "

C++(二十八) — 构造函数的初始化列表

1.解决的问题: 在 B 类中,组合了一个 A 类对象,其中A类设计了构造函数.由于构造函数的调用规则,设计了构造函数就必须调用,但在定义B类时没有机会初始化A,因此采用构造函数的初始化列表来解决.  2.构造和析构调用顺序 先执行被组合对象的构造函数,如果组合对象有多个,则按照定义顺序,而不是按照初始化列表顺序.   析构函数,和构造函数的调用顺序相反. 举例如下: class A { public: A(int a_) { a = a_; cout << "A的构造函数,a: &

重拾C++之构造函数的初始化列表

"初始化列表少了一次调用默认构造函数的过程,这对于数据密集型的类来说,是非常高效的." 出自:C++ 初始化列表

【校招面试 之 C++】第1题 为什么优先使用构造函数的初始化列表

1.首先看一个例子: #include<iostream> using namespace std; class Test1 { public: Test1() // 无参构造函数 { cout << "Construct Test1" << endl ; } Test1(const Test1& t1) // 拷贝构造函数 { cout << "Copy constructor for Test1" <

构造函数和初始化列表

区别: 对于在函数体中(构造函数)初始化,是在所有的数据成员被分配内存空间后才进行的. 列表初始化是给数据成员分配内存空间时就进行初始化,就是说分配一个数据成员只要冒号后有此数据成员的赋值表达式(此表达式必须是括号赋值表达式),那么分配了内存空间后在进入函数体之前给数据成员赋值,就是说初始化这个数据成员此时函数体还未执行. 在我们使用初始化列表进行初始化时,它是关于C++初始化类成员的.它们是按照声明的顺序初始化的,而不是按照出现在初始化列表中的顺序. 三种类型必须通过初始化列表来初始化  常量

构造函数的初始化列表抛出异常

即使捕获了,依然会上抛.具体见:http://blog.csdn.net/hikaliv/article/details/4460180 #include <iostream> using namespace std; class A { public: A(int a) try: m_p(new char[a]) { } catch(...) { m_p = NULL; cout << "catch1..." << endl; } ~A() { d

【C/C++】构造函数、默认构造函数、成员初始化列表

常见问题 Q1. 下列关于构造函数的描述中,错误的是( ) A. 构造函数可以设置默认的参数 B. 构造函数在定义类对象时自动执行 C. 构造函数可以是内联函数 D. 构造函数不可以重载 Q2. 下列代码中a.b的各个成员变量值是多少? 1 class Student 2 { 3 public: 4 Student() {} 5 void show(); 6 private: 7 string name; 8 int number; 9 int score; 10 }; 11 Student a