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

这些对象都分配在栈上

//
//  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语言函数调用栈(二) 0 引言 程序的执行过程可看作连续的函数调用。当一个函数执...
    小猪啊呜阅读 4,736评论 1 19
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,395评论 11 349
  • JVM内存模型Java虚拟机(Java Virtual Machine=JVM)的内存空间分为五个部分,分别是: ...
    光剑书架上的书阅读 2,668评论 2 26
  • 多领域涉猎 书读三遍(览读,精度,复读) 仔细阅读正文以外的部分 读书笔记(摘录精华,写下观点,做出自己的评论,读...
    孤独的Shepherd阅读 148评论 0 1
  • 雨转阴,平淡。今天谈两点;一是每个人的一言一行都在暴露着自己是个什么样的人。分两种,一种是积极思维的人,他们更乐观...
    生虎日记阅读 344评论 0 0