美文网首页
C++初识对象初始化列表,与应用

C++初识对象初始化列表,与应用

作者: 司马捷 | 来源:发表于2016-07-20 17:59 被阅读44次

这些对象都分配在栈上

//
//  main.cpp
//  拷贝构造函数
//
//  Created by Eric on 16/7/20.
//  Copyright © 2016年 Eric. All rights reserved.
//

#include <iostream>
using namespace std;
class A{
public:
    A(int a){
        _a = a;
    };
    A(int a,int b){
        _a = a;
    };
    
    A(const A& obj){
        cout<<"A 拷贝构造函数调用\n";
    }
    int getA(){
        return _a;
    }
    void setA(int a){
        _a = a;
    }
private:
    int _a;
};

class Location
{
public:
    /**
     *  含参构造函数  构造函数初始化列表
     */
    Location(int x = 0,int y = 0):a1(10){
        _x = x;
        _y = y;
        _myP = (char *)malloc(100);
        strcpy(_myP, "adfadaf");
        
        cout<<"Constructor Object.\n";
    }
    Location(const Location &obj):a1(10){
        cout<<"调用拷贝构造函数 \n";
    }
    /**
     *  析构函数
     */
    ~Location(){
        cout<<_x<<","<<"Object destroryed"<<endl;
        if (_myP != NULL) {
            free(_myP);
        }
    }
    
    int getX(){
        return _x;
    }
private:
    int _x,_y;
    
    char *_myP;
    A a1;
    
};

class B{
public:
    B(int a,int n,int m,int a2n,int a2m):a1(n,m),a2(a2n,a2m){
        _a = a;
    }
    
    A getA1(){
        return a1;
    }
    A getA2(){
        return a2;
    }
    
    void doThing(A &a){
        a.setA(100);
        printf("B 开始Do thing了\n");
    }
    
private:
    A a1;
    A a2;
    int _a;
};


int main(int argc, const char * argv[]) {
    // insert code here...
    std::cout << "Hello, World!\n";
    

    B b1 = B(1, 2, 3, 4, 5);
    A a1 = b1.getA1();
    A a2 = b1.getA2();
    printf("a1-->%d\n",a1.getA());
    printf("a2-->%d\n",a2.getA());
    
    
    b1.doThing(a1);
    printf("a1-->%d\n",a1.getA());
    
    return 0;
}

相关文章

  • C++初识对象初始化列表,与应用

    这些对象都分配在栈上

  • C++初始化列表

    引言 用c++的人都知道,c++的构造函数具有初始化列表,初始化列表有什么作用?什么情况下必须使用初始化列表...

  • [C++之旅] 11 初始化列表

    [C++之旅] 11 初始化列表 初始化列表的特性 初始化列表先于构造函数执行 初始化列表只能用于构造函数 初始化...

  • C++的初始化列表和列表初始化

    C++的初始化列表和列表初始化 初始化列表 初始化列表是声明在构造函数中来实现的,相当于初始化,而不是复制操作 初...

  • 成员初始化列表

    C++为类中提供类成员的初始化列表 类对象的构造顺序是这样的:1.分配内存,调用构造函数时,隐式/显示的初始化各数...

  • 类的组合

    组合类构造函数一般的定义形式如下: 内嵌对象的初始化使用了 初始化列表 来完成——内嵌对象必须使用初始化列表来实现...

  • 极客班第一周学习笔记

    初识C++ C++是在C之上基于对象,面向对象的编程语言。c++相比c在编程上更加模块化,具象化。 C++代码规范...

  • Python之列表基础操作

    列表的初识 列表由[]表示 没一项元素由逗号隔开 列表什么都能装 ,能装对象的对象列表可以存储大量的数据 列表的索...

  • Dart语法面向对象之1

    面向对象之1 概述 类与对象,声明、创建及基本特性构造方法及初始化列表静态成员及对象操作符的使用 类 属性与方法 ...

  • c++11新特性之列表初始化

    C++11新增了列表初始化的概念。 在C++11中可以直接在变量名后面加上初始化列表来进行对象的初始化。 列表初始...

网友评论

      本文标题:C++初识对象初始化列表,与应用

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