码迷,mamicode.com
首页 > 编程语言 > 详细

C++补习 局部变量,引用,构造函数后冒号

时间:2016-10-08 19:42:53      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:

 遇到以下写法,冒号后面是对变量赋值

class A
{
  int a;
  int b;
public: A( int aa, int bb ):a(aa),b(bb) { } }
等价于:
A( int aa, int bb )
{
a=aa;
b=bb;
}

 

 

代码位置:

#include <iostream>
using namespace std;
class A
{
public:
        A(int msg){
                this->msg = msg;
                cout<<"create A\n";
        }

        ~A(){
                cout<<"destroy A\n";
        }

        int msg;
};
void swap(A& a, A& b) {
        A temp = a;
        a = b;
        b = temp;
}

int main()
{
        A a(1);
        A b(2);

        std::cout<<"a="<<a.msg<<"b="<<b.msg;
        swap(a, b);
        std::cout<<"a="<<a.msg<<"b="<<b.msg;
        std::cout<<"hellow world";
        //a会被销毁吗?
        return 0;
}

 

1 局部变量创建

  直接在作用域内A a(对应无参数构造函数)以及A a(1) (带参数构造函数)在栈上创建对象

 

2 引用的问题

  c的函数如果不带引用是按照值传递的!如下函数

void swap(A* a, A* b) {
        A* temp = a;
        a = b;
        b = temp;
}

  这样写交换对象是没用的。

  因为指针是值传递的,离开了swap函数一切照旧

  

 

C++补习 局部变量,引用,构造函数后冒号

标签:

原文地址:http://www.cnblogs.com/mingwuyun/p/5939609.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!