首页 > 代码库 > C++补习 局部变量,引用,构造函数后冒号

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

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

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++补习 局部变量,引用,构造函数后冒号